0

从第一个找到的数字中拆分 jQuery 中的字符串的最佳方法是什么。

例子:Speelhof(STE) 0 /W301

我想将字符串分成两部分(拆分必须发生在第一个找到的数字上)

结果应该是两部分: Speelhof(STE)0 /W301

字符串可以与不同的数字不同,所以我需要一种方法来从任何数字中提取字符串......

谁能帮我吗?谢谢!

4

3 回答 3

3

你不想要.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"
于 2012-11-06T15:29:08.370 回答
1

这个问题是正则表达式的完美候选:

var match = "Speelhof(STE) 0 /W301".match(/^(.+)(\d.+)$/);

然后,您可以将这两个组件作为返回数组的元素访问:match[1]match[2].

这里不需要使用 jQuery。

解释模式是如何工作的:^表示字符串的开头;表示任何字符 ( ) 中的(.+)一个或多个 ( ) ,括号捕获此组并允许您在返回的数组中访问它。第二组包括一个数字 ,后跟一个或多个任意字符 ,,就像在第一组中一样。表示字符串的结尾。+.\d.+$

于 2012-11-06T15:29:58.040 回答
1

假设您提到的字符串中有数字。您可以遍历字符串并找到第一个数字作为字符串的分割点。

现场演示

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);
于 2012-11-06T15:42:39.280 回答