仅在指定字符的第一个实例上分割字符串

在我的代码中,我根据分割了一个字符串_并获取了数组中的第二项。


var element = $(this).attr('class');

var field = element.split('_')[1];

需要good_luck并提供给我luck。很棒!


但是,现在我有一堂课,看起来像good_luck_buddy。如何获取我的JavaScript忽略第二个_并给我luck_buddy?


我var field = element.split(new char [] {'_'}, 2);在ac#stackoverflow答案中找到了它,但是它不起作用。我在jsFiddle上尝试过...


慕森卡
浏览 816回答 3
3回答

阿晨1998

使用捕获括号:"good_luck_buddy".split(/_(.+)/)[1]"luck_buddy"它们被定义为如果separator包含捕获括号,则在数组中返回匹配的结果。因此,在这种情况下,我们希望在处分割_.+(即,分割分隔符是以开头的子字符串_),但还要让结果包含分隔符的某些部分(即之后的所有内容_)。在此示例中,我们的分隔符(match _(.+))为_luck_buddy,捕获的组(分隔符内)为lucky_buddy。如果没有捕获括号,则luck_buddy(matching .+)不会包含在结果数组中,因为很简单split,就是不将分隔符包含在结果中。

ibeautiful

您需要什么正则表达式和数组?myString = myString.substring(myString.indexOf('_')+1)var myString= "hello_there_how_are_you"myString = myString.substring(myString.indexOf('_')+1)console.log(myString)

一只斗牛犬

String.split不幸的是,Javascript 无法限制实际的拆分次数。它有第二个参数,它指定要返回多少实际拆分项目,这在您的情况下没有用。解决方案是拆分字符串,将第一个项目移开,然后重新加入其余项目:var element = $(this).attr('class');var parts = element.split('_');parts.shift(); // removes the first item from the arrayvar field = parts.join('_');
打开App,查看更多内容
随时随地看视频慕课网APP