Javascript字符串操作
我有一个如下的字符串:Javascript字符串操作,javascript,regex,Javascript,Regex,我有一个如下的字符串: var st = "ROAM-Synergy-111-222-LLX " 它可以在数值之前有任意数量的项。其可能的格式为: var st = "SSI-ROAM-Synergy-111-222-LLX " or var st = "LCD-SSI-ROAM-Synergy-111-222-LLX" etc.. 现在我只需要获取这个字符串中数值之前的项。即。 “SSI漫游协同”或“LCD SSI漫游协同” 我是这样使用的: var finalString =
var st = "ROAM-Synergy-111-222-LLX "
它可以在数值之前有任意数量的项。其可能的格式为:
var st = "SSI-ROAM-Synergy-111-222-LLX " or
var st = "LCD-SSI-ROAM-Synergy-111-222-LLX" etc..
现在我只需要获取这个字符串中数值之前的项。即。
“SSI漫游协同”或“LCD SSI漫游协同”
我是这样使用的:
var finalString = st.split("-");
但是如何仅获取数值之前的术语。您可以使用:
var myval = st.match(/^\D+(?=-)/)[0];
//=> SSI-ROAM-Synergy OR LCD-SSI-ROAM-Synergy
说明:
^在字符串开头断言位置
\D+匹配任何非数字字符[^0-9]
量词:在一次和无限次之间,尽可能多的次数
(?=-)正向前瞻-断言下面的正则表达式可以匹配
-按字面意思匹配字符
尝试以下代码
<script>
var yourString = "ROAM-Synergy-111-222-LLX ";
var output=retriveStartString(yourString);
alert(output);
function retriveStartString(inputString){
var newString="";
for (i=0;i<inputString.length;i++) {
var subStr=inputString.substr(i,1);
//alert(subStr);
if(subStr.charCodeAt(0)>=48 && subStr.charCodeAt(0)<=57){
break;
}
else{
newString+=subStr;
}
}
return newString;
}
</script>
var yourString=“ROAM-Synergy-111-222-LLX”;
var输出=retriveStartString(您的字符串);
警报(输出);
函数retriveStartString(inputString){
var newString=“”;
对于(i=0;i=48&&subStr.charCodeAt(0)
这里b
的输出将是[“LCD”、“SSI”、“ROAM”、“Synergy”]
这里是使用indexOf、match和substr组合的另一种方法
var st = "ROAM-Synergy-111-222-LLX";
var lIdx = st.indexOf(st.match(/-\d/));
console.log(st.substr(0, (lIdx >= 0) ? lIdx : st.length));
还有没有任何数值的字符串吗?没有。原始字符串必须有一些数字代码。例如“111-222-LLX”或“333-444-LLX”等。我注意到的一件事是……如果我传递这个字符串,即“nLight-SSI-RELOC-RTLED-Synergy-345-777-LLA替换”…那么它只返回“nLight-SSI-RELOC-RTLED”你能检查一下吗?当输入是nLight-SSI-RELOC-RTLED-Synergy-345-777-LLA替换时,它实际上返回nLight-SSI-RELOC-RTLED-Synergy
,这是不正确的吗?谢谢再次确认。我在代码中使用了它,这是我面临的唯一问题…让我再次检查一下..我可能做错了什么。。。
var st = "ROAM-Synergy-111-222-LLX";
var lIdx = st.indexOf(st.match(/-\d/));
console.log(st.substr(0, (lIdx >= 0) ? lIdx : st.length));