如何使用Javascript将两部分填充的字符串拆分为两个变量?

时间:2015-04-24 08:27:35

标签: javascript

我有一个字符串userName,看起来像这样:

var userName = "CityOfLiverpool-----joesmith";
var userName = "Hull----------------janesmith";

userName的第一部分是帐户:"CityOfLiverpool"

userName的第二部分是用户:"joesmith"

帐户最多不超过20个字符,并使用连字符填充到右侧。

如何提取帐户和用户?

4 个答案:

答案 0 :(得分:3)

将带有捕获组的正则表达式用于由连字符分隔的两个部分。

var match = userName.match(/^([^-]+)-+(.*)$/);
var firstName = match[1];
var lastName = match[2];

答案 1 :(得分:2)

一种简单的方法:

var parts = userName.split('-');
var firstPart = parts[0];
var lastPart = parts[parts.length - 1];

答案 2 :(得分:2)

您可以使用regular expression

提取帐户和用户
userName.match(/^([^-]{1,20})-*(.*)$/)

^匹配字符串的开头,$匹配结尾。 [^-]匹配任何不是连字符的字符,[^-]{1,20}匹配1到20个此类字符之间的任何字符。 -*匹配零个或多个连字符。 .*匹配零个或多个任何类型的字符。

整个正则表达式分解如下:

^             start of string
([^-]{1,20})  1 to 20 characters, each of which is not a hyphen
-*            zero or more hyphens
(.*)          zero or more characters of any kind
$             end of string

完成后

match = userName.match(/^([^-]{1,20})-*(.*)$/)

您可以将第一个带括号的组查找为match[1],将第二个带括号的组查找为match[2]



var userName = "Hull----------------janesmith";

var match = userName.match(/^([^-]{1,20})-*(.*)$/),
    account = match[1],
    user = match[2];
document.write('account = "'+account+'"<br />user = "'+user+'"');
&#13;
&#13;
&#13;

答案 3 :(得分:0)

如果用户名包含连字符或帐户长度为20个字符,则某些解决方案将无效。 这是一个替代方案,基于帐户总是20个字符的事实:

var account = userName.substr(0,20).replace(/-+$/, "");
var name = userName.substr(20, userName.length-20);