我正在为我的公司做跟踪应用程序,我真的需要你的帮助
我有一些显示错误的字符串
我将获得邮政编码/邮政编码以及城市名称和“功能”(例如distrubition) 我得到的字符串是这样的(它是瑞士,格式是邮政编码cityname函数)
place = "5506 MägenwilDistributionsbasis";
现在邮编是“5506”
cityname是“Mägenwil”
功能是“Distributionsbasis”
我的问题是我如何分割城市名称和功能(现在这个例子)? 是可以用正则表达式或if语句来做吗?
答案 0 :(得分:2)
您可以使用以下正则表达式拆分字符串:
var myString = "5506 MägenwilDistributionsbasis";
var units = /(\d+ )([A-Z][^A-Z]+)(.+)/g.exec(myString);
查看数组units
的内容:您看到units[0]
是整个字符串,units[1], units[2], units[3]
就是您所需要的。
注意根据评论我必须说,它只是一个可能的解决方案草案,让您了解如何开始解决JS中的问题。因此,当您在#34;魔术字符串"中使用更复杂的城市名称和函数名称测试您的应用程序时,请尝试找出适合您目的的正则表达式,因为([A-Z][^A-Z]+)
肯定不会匹配所有已知的城市名称。
答案 1 :(得分:1)
您可以以最原始的方式实现它。像这样:
place = "5506 MägenwilDistributionsbasis";
var codeAndNameAndFunction = place.split(" ");
var code = codeAndNameAndFunction[0];
var nameAndFunction = codeAndNameAndFunction[1];
var startOfTheFunction;
for (var i = 1, len = nameAndFunction.length; i < len; i++) {
myCharacter = nameAndFunction.charCodeAt(i);
if (myCharacter >= 65 && myCharacter <= 90) {
startOfTheFunction = i;
break;
}
}
var name = nameAndFunction.slice(0, startOfTheFunction);
var functionName = nameAndFunction.slice(startOfTheFunction,nameAndFunction.length);
答案 2 :(得分:1)
这是对Florian Peschka的回答的轻微修改:
您可以使用以下正则表达式拆分字符串:
var myString = "5506 Yverdon-les-BainsDistributionsbasis";
var units = /(\d+ )(.+)([A-Z][^A-Z]+)/g.exec(myString);
检查数组单元的内容:你看到单位[0]是整个字符串,单位[1],单位[2],单位[3]是你需要的。
注意,这仅适用于&#34;功能&#34;姓名始终采用大写字母的形式,后跟非大写字母。