从第一个找到的数字中分割jQuery中的字符串的最佳方法是什么。
示例:Speelhof(STE) 0 /W301
我想将字符串拆分为2部分(拆分必须发生在第一个找到的数字上)
结果应该是2部分:
Speelhof(STE)
和0 /W301
字符串可能因数字不同而不同,所以我需要一种从任意数字子串的方法...
任何人都可以帮助我吗?谢谢!
答案 0 :(得分:2)
您不希望.split
,因为它会使用分隔符。您可以将.match
与正则表达式一起使用:
"Speelhof(STE) 0 /W301".match(/^(\D+)(.*)$/);
这将给出一个包含三个元素的数组:字符串本身,匹配\D+
(一个或多个非数字)和.*
(其余部分)的部分。所以你可以用它作为:
var arr = "Speelhof(STE) 0 /W301".match(/^(\D+)(.*)$/);
var first = arr[1]; // "Speelhof(STE) "
var second = arr[2]; // "0 /W301"
答案 1 :(得分:1)
这个问题是正则表达式的理想选择:
var match = "Speelhof(STE) 0 /W301".match(/^(.+)(\d.+)$/);
然后,您可以将这两个组件作为返回数组的元素进行访问:match[1]
和match[2]
。
这里没有必要使用jQuery。
解释模式的工作原理:^
表示字符串的开头; (.+)
表示任何字符(+
)中的一个或多个(.
),并且括号捕获此组并允许您在返回的数组中访问它。第二组包含一个数字\d
,后跟一个或多个任何字符.+
,就像第一组中一样。 $
表示字符串的结尾。
答案 2 :(得分:1)
假设你提到的字符串中有数字。您可以浏览字符串并找到第一个数字作为字符串的分割点。
<强> Live Demo 强>
str = "Speelhof(STE) 0 /W301";
for(i=0; i < str.length; i++)
{
if(parseInt(str[i]) >= 0 && parseInt(str[i]) <= 9)
break;
}
firstPart = str.substring(0, i);
secondPart = str.substring(i+1, str.length);