在我的代码中,我基于_分割字符串并获取数组中的第二项。
var element = $(this).attr('class');
var field = element.split('_')[1];
带来好运,给我带来好运。工作好了!
但是,现在我有了一个看起来像good_luck_buddy的类。我如何让我的javascript忽略第二个_,给我luck_buddy?
我找到了var field = element。Split (new char [] {'_'}, 2);在c# stackoverflow中回答,但它不起作用。我尝试在jsFiddle…
Mark F的解决方案很棒,但旧的浏览器不支持。Kennebec的解决方案很棒,老浏览器也支持,但不支持regex。
所以,如果你正在寻找一个解决方案,只分割你的字符串一次,这是由旧浏览器支持和支持regex,这是我的解决方案:
String.prototype.splitOnce = function(正则表达式)
{
Var match = this.match(正则表达式);
如果(匹配)
{
var match = this.indexOf(match[0]);
[这返回。substring (0, match_i),
这一点。Substring (match_i + match[0].length)];
}
其他的
{返回[这个,""];}
}
Var STR = "某事/////另一件事///再次";
警报(str.splitOnce (/ \ / + /) [1]);
这适用于我的Chrome + FF:
"foo=bar=beer".split(/^[^=]+=/)[1] // "bar=beer"
"foo==".split(/^[^=]+=/)[1] // "="
"foo=".split(/^[^=]+=/)[1] // ""
"foo".split(/^[^=]+=/)[1] // undefined
如果你也需要钥匙,试试这个:
"foo=bar=beer".split(/^([^=]+)=/) // Array [ "", "foo", "bar=beer" ]
"foo==".split(/^([^=]+)=/) // [ "", "foo", "=" ]
"foo=".split(/^([^=]+)=/) // [ "", "foo", "" ]
"foo".split(/^([^=]+)=/) // [ "foo" ]
//[0] = ignored (holds the string when there's no =, empty otherwise)
//[1] = hold the key (if any)
//[2] = hold the value (if any)
这里有一个RegExp可以完成这个任务。
'good_luck_buddy' . split(/^.*?_/)[1]
首先,它迫使比赛从
从“^”开始。然后它匹配任何数字
换句话说,不是'_'的字符
所有字符在第一个“_”之前。
“?'表示最小字符数
使整个模式匹配的是
由'.*?“因为它是被遵循的
通过'_',然后包含在匹配中
作为最后一个角色。
因此split()使用这样的匹配
部分作为它的“分配器”,并将其从
结果。所以它删除了所有东西
直到并包括第一个“_”和
剩下的作为第二元素
结果。第一个元素是“”表示
匹配部分之前的部分。它是
“因为比赛从头开始。”
还有其他regexp作为
很像Chandu给出的/_(.*)/
在之前的回答中。
/ ^ * ?_/对你有好处
能理解它没有什么吗
必须了解这个特殊角色
使用replace()捕获组。