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
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();
|
|
}
|