1个字符串,是2个单词,没有空格

时间:2015-11-02 08:41:33

标签: javascript regex string

我正在为我的公司做跟踪应用程序,我真的需要你的帮助

我有一些显示错误的字符串

我将获得邮政编码/邮政编码以及城市名称和“功能”(例如distrubition) 我得到的字符串是这样的(它是瑞士,格式是邮政编码cityname函数)

place = "5506 MägenwilDistributionsbasis";

现在邮编是“5506”
cityname是“Mägenwil”
功能是“Distributionsbasis”

我的问题是我如何分割城市名称和功能(现在这个例子)? 是可以用正则表达式或if语句来做吗?

3 个答案:

答案 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;姓名始终采用大写字母的形式,后跟非大写字母。