You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

正则移除地址串多余段后如何去除首尾残留的_/等无效分隔符

问题描述

现有如下格式的地址段拼接字符串(格式可自定义,示例格式如下):
lastname/firstname/_/country/postalCode/_/regionId/city/addressFirst/addressSecond/_/phone

功能要求

传入指定地址段列表后,返回仅保留指定段的字符串,移除未请求的段,且多个连续段被移除时最多保留1个间隔符_。

功能示例

  • 输入 : ["country", "postalCode"],返回 "country/postalCode"
  • 输入 : ["lastname", "firstname", "regionId"],返回 "lastname/firstname/_/regionId"
  • 输入 : ["firstname", "country", "regionId", "city"],返回 "firstname/_/country/_/regionId/city"
  • 输入 : ["country", "regionId", "phone"],返回 "country/_/regionId/_/phone"

现有实现代码

type AddressPart = "firstname" | "lastname" | ... | "phone";
const allAddressParts = ["firstname", "lastname", ... ,"phone"];
static getAddress(
  format = "lastname/firstname/_/country/postalCode/_/regionId/city/addressFirst/addressSecond/_/phone",
  parts: AddressPart[],
) {
  const toRemove = allAddressParts.filter((part) => !parts.includes(part));
  toRemove.forEach((part) => {
    format = format
      .replace(`_/${part}/_`, '_')
      .replace(new RegExp(part + '/?'), '');
  });
  return format;
}

待解决问题

现有实现存在首尾残留分隔符的问题,处理后会出现_/country/postalCode/_/regionId/city/addressFirst/addressSecond/_/这类结果。要求无需重新遍历数组,移除位于字符串首尾的/_/或_/无效分隔符。


解决方案

仅需在return语句前增加一行正则替换即可,无需额外遍历数组,通过字符串首尾定位规则一次性清除无效分隔符:

format = format.replace(/^_\/|\/_$/g, '');

正则说明

  • ^_\/ 匹配字符串开头的_/前缀
  • \/_$ 匹配字符串末尾的/_后缀
  • g修饰符表示全局匹配,可同时处理首尾两种无效分隔符场景

修复后完整代码

type AddressPart = "firstname" | "lastname" | ... | "phone";
const allAddressParts = ["firstname", "lastname", ... ,"phone"];
static getAddress(
  format = "lastname/firstname/_/country/postalCode/_/regionId/city/addressFirst/addressSecond/_/phone",
  parts: AddressPart[],
) {
  const toRemove = allAddressParts.filter((part) => !parts.includes(part));
  toRemove.forEach((part) => {
    format = format
      .replace(`_/${part}/_`, '_')
      .replace(new RegExp(part + '/?'), '');
  });
  // 清除首尾无效分隔符
  format = format.replace(/^_\/|\/_$/g, '');
  return format;
}

内容的提问来源于stack exchange,提问作者Crocsx

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 11:36:11