从第一个找到的数字中拆分 jQuery 中的字符串的最佳方法是什么。
例子:Speelhof(STE) 0 /W301
我想将字符串分成两部分(拆分必须发生在第一个找到的数字上)
结果应该是两部分:
Speelhof(STE)
和0 /W301
字符串可以与不同的数字不同,所以我需要一种方法来从任何数字中提取字符串......
谁能帮我吗?谢谢!
你不想要.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"
这个问题是正则表达式的完美候选:
var match = "Speelhof(STE) 0 /W301".match(/^(.+)(\d.+)$/);
然后,您可以将这两个组件作为返回数组的元素访问:match[1]
和match[2]
.
这里不需要使用 jQuery。
解释模式是如何工作的:^
表示字符串的开头;表示任何字符 ( ) 中的(.+)
一个或多个 ( ) ,括号捕获此组并允许您在返回的数组中访问它。第二组包括一个数字 ,后跟一个或多个任意字符 ,,就像在第一组中一样。表示字符串的结尾。+
.
\d
.+
$
假设您提到的字符串中有数字。您可以遍历字符串并找到第一个数字作为字符串的分割点。
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);