如何使用Javascript将一个由两部分组成的填充字符串拆分为两个变量?
我有一个字符串,如何使用Javascript将一个由两部分组成的填充字符串拆分为两个变量?,javascript,Javascript,我有一个字符串,userName,看起来像这样: var userName = "CityOfLiverpool-----joesmith"; var userName = "Hull----------------janesmith"; userName的第一部分是帐户:“CityOfLiverpool” 用户名的第二部分是用户:“joesmith” 帐户的最大长度始终为20个字符,并在右侧用连字符填充 如何提取帐户和用户?一种简单的方法: var parts = userName.spli
userName
,看起来像这样:
var userName = "CityOfLiverpool-----joesmith";
var userName = "Hull----------------janesmith";
userName
的第一部分是帐户:“CityOfLiverpool”
用户名的第二部分是用户:“joesmith”
帐户的最大长度始终为20个字符,并在右侧用连字符填充
如何提取帐户和用户?一种简单的方法:
var parts = userName.split('-');
var firstPart = parts[0];
var lastPart = parts[parts.length - 1];
对于由连字符分隔的两个部分,使用带有捕获组的regexp
var match = userName.match(/^([^-]+)-+(.*)$/);
var firstName = match[1];
var lastName = match[2];
您可以使用以下命令提取帐户和用户:
^
匹配字符串的开头,$
匹配字符串的结尾[^-]
匹配任何非连字符的字符,[^-]{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=“赫尔------------------janesmith”;
var match=userName.match(/^([^-]{1,20})-*(.*)$/),
帐户=匹配[1],
用户=匹配[2];
document.write('account=“”+account+”
user=“”+user+”)代码>如果用户名包含连字符或帐户长度为20个字符,则某些解决方案将不起作用。
这是一个备选方案,因为帐户始终为20个字符:
var account = userName.substr(0,20).replace(/-+$/, "");
var name = userName.substr(20, userName.length-20);
将regexp与捕获组一起使用。String.prototype.split()
接受正则表达式-“foo---bar”。split(/-+/)
->[“foo”,“bar”]
@Samantha J:帐户和用户部分可以有-?
var account = userName.substr(0,20).replace(/-+$/, "");
var name = userName.substr(20, userName.length-20);