You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

37 lines
975 B

/** MotherShip 展示用地址(不含邮编) */
export function formatAddressDisplayLabel(addr: {
street?: string;
city?: string;
state?: string;
formatted_address?: string;
mothership_display_label?: string;
selected_from_mothership?: boolean;
}): string {
const msLabel = addr.mothership_display_label?.trim();
if (addr.selected_from_mothership && msLabel) {
return stripZipAndCountry(msLabel);
}
const street = addr.street?.trim();
const city = addr.city?.trim();
const state = addr.state?.trim();
if (street && city && state) {
return `${street}, ${city}, ${state}`;
}
const raw = addr.formatted_address?.trim() ?? "";
if (!raw) {
return "";
}
return stripZipAndCountry(raw);
}
function stripZipAndCountry(raw: string): string {
return raw
.replace(/,?\s*\d{5}(-\d{4})?\b/g, "")
.replace(/,?\s*USA\s*$/i, "")
.replace(/\s{2,}/g, " ")
.replace(/,\s*,/g, ",")
.replace(/,\s*$/, "")
.trim();
}