Javascript 用逗号分隔字符串

Javascript 用逗号分隔字符串,javascript,regex,Javascript,Regex,需要拆分包含由逗号(,)分隔的国家名称的字符串,并且国家名称本身也包含逗号(,) var str = "South Georgia and The South Sandwich Islands,Congo, Democratic Republic,Mauritania,Finland,Spain,Armenia,Mauritius,France,Sri Lanka,Aruba,Mayotte,French Guiana,Suriname,Australia,Mexico,French Polyn

需要拆分包含由逗号(,)分隔的国家名称的字符串,并且国家名称本身也包含逗号(,)

var str = "South Georgia and The South Sandwich Islands,Congo, Democratic Republic,Mauritania,Finland,Spain,Armenia,Mauritius,France,Sri Lanka,Aruba,Mayotte,French Guiana,Suriname,Australia,Mexico,French Polynesia,Svalbard and Jan Mayen,Austria,Micronesia, Federated States,French Southern Territories";
预期结果:

[   "South Georgia and The South Sandwich Islands",
    "Mexico",
    "French Polynesia",
    "Congo, Democratic Republic",
    "Svalbard and Jan Mayen",
    "Micronesia, Federated States",
]

通常,您不希望使用可能在有效国家/地区显示为除虫剂的字符,即aka

然而,如果我们可以假设
在用作除味剂时,只会在其周围没有空格的情况下出现。然后我们可以使用正则表达式拆分字符串:

var str=“南乔治亚和南桑威奇群岛、刚果、民主共和国、毛里塔尼亚、芬兰、西班牙、亚美尼亚、毛里求斯、法国、斯里兰卡、阿鲁巴、马约特、法属圭亚那、苏里南、澳大利亚、墨西哥、法属波利尼西亚、斯瓦尔巴德和扬马扬、奥地利、密克罗尼西亚联邦、法国南部领土”;

var res=str.split(/(?可能有一种通过正则表达式实现的方法,但我建议使用一种简单的方法。查看您的输入,您可以看到将国家名称与其名称分开的逗号后面跟一个空格,而列表中的逗号后面不跟一个:
var str=“南乔治亚和南桑威奇群岛、刚果、民主共和国、毛里塔尼亚、芬兰、西班牙、亚美尼亚、毛里求斯、法国、斯里兰卡、阿鲁巴、马约特、法属圭亚那、苏里南、澳大利亚、墨西哥、法属波利尼西亚、斯瓦尔巴德和扬马扬、奥地利、密克罗尼西亚联邦、法国南部领土”

因此,为了区分这两个字符,我建议用输入中不会出现的特殊字符替换“
”,“”,比如说“$”。之后,您可以按“
”,“
”进行拆分。然后您可以将特殊字符替换回“
”,“


这当然不是最有效的解决方案。但它确实是一种解决方案。

如果字符串的格式与上述格式相同,则首先需要使用逗号拆分字符串。 如果结果数组中的项以空格开头,则将该项与结果数组中的前一项合并。 在带有逗号的国家/地区名称中,逗号后有一个空格,而其他非逗号的国家/地区名称只需使用正则表达式即可

var str=“南乔治亚和南桑威奇群岛、刚果、民主共和国、毛里塔尼亚、芬兰、西班牙、亚美尼亚、毛里求斯、法国、斯里兰卡、阿鲁巴、马约特、法属圭亚那、苏里南、澳大利亚、墨西哥、法属波利尼西亚、斯瓦尔巴德和扬马扬、奥地利、密克罗尼西亚联邦、法国南部领土”;

var res=str.split(/(?您的分隔符不合适,因为它也包含在值(“刚果、民主共和国”、“密克罗尼西亚联邦”)中。您应该将其更改为“;”或“§”或其他内容。之后,您可以使用split(),如下面Hamza所指出的。“消息”:“SyntaxError:无效的regexp组”,“文件名”:”,“lineno”:14,“colno”:20@BorisSokolov我不知道。它对我来说运行得很好。非常感谢@Olian04,它工作得很好。如果可能的话,你能解释一下正则表达式吗?@ManimaranM我已经添加了一个解释和一个交互式示例。如果你觉得它解决了你的问题,请随意接受答案(单击复选标记):)@BorisSokolov我做了一些测试并更新了我的答案。
function getCountryList(str) {
  var strWithSpecialCharacterReplaced = str.replace(", ", "$");
  var countryList = strWithSpecialCharacterReplaced.split(",");
  return countryList.map(countryString => countryString.replace("$", ", "));
}