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

如何在JavaScript中用多组关联数组将城市替换为对应国家?

JavaScript实现城市名替换为对应国家名的方案

需求说明

现有一段包含多个城市名的文本字符串,需要将其中的城市子串替换为对应的国家名称,示例如下:

原字符串:

const string = `I am living in London.
I am living in Brighton.
I am living in Birmingham.
I am living in Paris.
I am living in Lyon.
I am living in Hamburg.
I am living in Berlin.
I am living in Münih.`

城市与国家对应关系:

  • 德国城市:Berlin, Hamburg, Bonn, Bochum, Bremen, Münih 等
  • 法国城市:Lyon, Paris, Nice 等
  • 英国城市:London, Brighton, Birmingham 等

期望输出:

const newString = `I am living in England.
I am living in England.
I am living in England.
I am living in France.
I am living in France.
I am living in Germany.
I am living in Germany.
I am living in Germany.`

实现思路

  • 建立城市-国家映射:把分散的城市数组整合为键值对对象,键为城市名,值为对应国家名,实现快速查找。
  • 生成匹配正则:将所有城市名用|拼接成正则模式,开启全局匹配,确保文本中所有城市子串都能被匹配到。
  • 执行替换操作:调用字符串的replace()方法,通过回调函数根据匹配到的城市名,从映射中取出对应国家名完成替换。

完整代码实现

const string = `I am living in London.
I am living in Brighton.
I am living in Birmingham.
I am living in Paris.
I am living in Lyon.
I am living in Hamburg.
I am living in Berlin.
I am living in Münih.`;

// 修正原代码问题:城市名需以字符串形式定义
const citiesGermany = ['Berlin', 'Hamburg', 'Bonn', 'Bochum', 'Bremen', 'Münih'];
const citiesFrance = ['Lyon', 'Paris', 'Nice'];
const citiesEngland = ['London', 'Brighton', 'Birmingham'];

// 构建城市-国家映射对象
const cityToCountry = {};
citiesGermany.forEach(city => cityToCountry[city] = 'Germany');
citiesFrance.forEach(city => cityToCountry[city] = 'France');
citiesEngland.forEach(city => cityToCountry[city] = 'England');

// 生成匹配所有城市的正则(若城市含特殊字符,需用RegExp.escape()转义)
const cityRegex = new RegExp(Object.keys(cityToCountry).join('|'), 'g');

// 执行替换
const newString = string.replace(cityRegex, matchedCity => cityToCountry[matchedCity]);

console.log(newString);

补充说明

  • 原代码中的城市数组元素未加引号,会被JS识别为变量导致报错,实际开发中必须改为字符串形式。
  • 如果城市名包含正则特殊字符(如.、()),需用RegExp.escape()(ES2021+支持)或自定义转义函数处理,避免匹配异常。
  • 若需要不区分大小写匹配,可在正则参数中添加i(即'gi'),同时需统一映射对象键的大小写,或在回调中转换匹配结果的大小写。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 21:27:32