Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Javascript将一个由两部分组成的填充字符串拆分为两个变量?_Javascript - Fatal编程技术网

如何使用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);