包含可变内容的字符串的JavaScript子字符串
我有一个可以包含各种信息的字符串,当我不能确定GUID在字符串中的位置时,我需要从这个字符串中生成一个GUID子字符串 字符串的可能版本 stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6 stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME stringVar=电子邮件:name@company.com&地点=某地&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6 还有一些其他的字符串排列,其中包含更多或更少的字段,它将始终至少包含GUID 我所拥有的东西的粗略版本:包含可变内容的字符串的JavaScript子字符串,javascript,string,substring,Javascript,String,Substring,我有一个可以包含各种信息的字符串,当我不能确定GUID在字符串中的位置时,我需要从这个字符串中生成一个GUID子字符串 字符串的可能版本 stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6 stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME stringVar=电子邮件:name@com
var room = str.substring(str.lastIndex(room),str.lastIndex(;))
if room.length !== 36
var room = str.substring(str.lastIndex(room),str.lastIndexOf(&)
一定有更干净的方法吗
一定有更干净的方法吗
有-正则表达式
var guid = str.match(/room:([^&]+)/);
如果找到匹配项,则该匹配项将位于guid[0]
中,而仅在guid[1]
中使用guid(减去“room:”)
一定有更干净的方法吗
有-正则表达式
var guid = str.match(/room:([^&]+)/);
如果找到匹配项,则该匹配项将位于
guid[0]
中,在guid[1]
中仅使用guid(减去“room:”)您可以使用字符串操作,例如:
var stringVar1=“电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6”;
var stringVar2=“电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME”;
var stringVar3=“电子邮件:name@company.com&位置=某地和房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6”;
函数getRoomId(输入){
返回输入
.split(&)//分成块
.find(part=>part.startsWith(“room:”)//查看哪个以room开头
.split(“:”[1];//拆分并返回第二部分,即GUID
}
log(getRoomId(stringVar1));
log(getRoomId(stringVar2));
log(getRoomId(stringVar3))代码>您可以只使用字符串操作,例如:
var stringVar1=“电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6”;
var stringVar2=“电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME”;
var stringVar3=“电子邮件:name@company.com&位置=某地和房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6”;
函数getRoomId(输入){
返回输入
.split(&)//分成块
.find(part=>part.startsWith(“room:”)//查看哪个以room开头
.split(“:”[1];//拆分并返回第二部分,即GUID
}
log(getRoomId(stringVar1));
log(getRoomId(stringVar2));
log(getRoomId(stringVar3))代码>使用此正则表达式
/(room:[a-zA-Z0-9]+\-[a-zA-Z0-9]+\-[a-zA-Z0-9]+\-[0-9]+\-[a-zA-Z0-9]+)/
这将与以下数据相匹配:
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
以下是匹配项:使用此正则表达式
/(room:[a-zA-Z0-9]+\-[a-zA-Z0-9]+\-[a-zA-Z0-9]+\-[0-9]+\-[a-zA-Z0-9]+)/
这将与以下数据相匹配:
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
room:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6
下面是匹配项:正则表达式是一个不错的选择,但它会使代码难以阅读
var stringValue=“stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME;”
var模式=/[\da-zA-Z]{8}-([\da-zA-Z]{4}-{3}[\da-zA-Z]{12}/;
var found=stringValue.match(模式)
console.log(找到[0])代码>正则表达式是一个很好的选择,但它使代码难以阅读
var stringValue=“stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME;”
var模式=/[\da-zA-Z]{8}-([\da-zA-Z]{4}-{3}[\da-zA-Z]{12}/;
var found=stringValue.match(模式)
console.log(找到[0])代码>您的“房间”guid仅包含十六进制字符。使用简单的匹配正则表达式捕获所需内容:
/&room:([a-f\d-]+)/i
如果room
可能显示为字符串中的第一个字段(在其开头),则您也可以增强它以匹配字符串开头的字段:
/(?:^|&)room:([a-f\d-]+)/i
^^^^
见
详细信息:
&room:
-匹配文字字符序列&room:
(?:^ |&)
是一个交替组,用于匹配起始字符串位置(^
)或(|
)符号)
([a-f\d-]+)
-将a-f
和a-f
范围内的一个或多个ASCII字母(因为/i
是不区分大小写的模式修饰符)、数字(\d
)或-
匹配并捕获到组1中
var strngs=['stringVar=email:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6;','stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME;','stringVar=email:name@company.com&地点=某地和房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6;'];
变量re=/&room:([a-f\d-]+)/i;
用于(STRNG的var s){
var res=(m=s.match(re))?m[1]:“”;
console.log(s+“\n=>\n”+res);//演示
}
您的“房间”guid仅包含十六进制字符。使用简单的匹配正则表达式捕获所需内容:
/&room:([a-f\d-]+)/i
如果room
可能显示为字符串中的第一个字段(在其开头),则您也可以增强它以匹配字符串开头的字段:
/(?:^|&)room:([a-f\d-]+)/i
^^^^
见
详细信息:
&room:
-匹配文字字符序列&room:
(?:^ |&)
是一个交替组,用于匹配起始字符串位置(^
)或(|
)符号)
([a-f\d-]+)
-将a-f
和a-f
范围内的一个或多个ASCII字母(因为/i
是不区分大小写的模式修饰符)、数字(\d
)或-
匹配并捕获到组1中
var strngs=['stringVar=email:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6;','stringVar=电子邮件:name@company.com&房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6&host=HOSTNAME;','stringVar=email:name@company.com&地点=某地和房间:b83edd0d-fec5-4ec0-8055-60bc0d8eb4b6;'];
变量re=/&room:([a-f\d-]+)/i;
用于(STRNG的var s){
var res=(m=s.match(re))?m[1]:“”;
console.log(s+“\n=>\n”+res)