如何只将字符串拆分一次,即1|Ceci n'est pas une pipe: | Oui
解析为:["1", "Ceci n'est pas une pipe: | Oui"]
?
split 的限制似乎没有帮助......
如何只将字符串拆分一次,即1|Ceci n'est pas une pipe: | Oui
解析为:["1", "Ceci n'est pas une pipe: | Oui"]
?
split 的限制似乎没有帮助......
您想用它String.indexOf('|')
来获取第一次出现“|”的索引。
var i = s.indexOf('|');
var splits = [s.slice(0,i), s.slice(i+1)];
这不是一个很好的方法,但工作效率不错:
var string = "1|Ceci n'est pas une pipe: | Oui";
var components = string.split('|');
alert([components.shift(), components.join('|')]);
您可以使用:
var splits = str.match(/([^|]*)\|(.*)/);
splits.shift();
正则表达式将字符串拆分为两个匹配组(带括号),第一个 | 之前的文本 和后面的文字。然后,我们shift
把整个字符串的匹配结果去掉(splits[0]
)。
ES6 语法允许采用不同的方法:
function splitOnce(s, on) {
[first, ...rest] = s.split(on)
return [first, rest.length > 0? rest.join(on) : null]
}
它还|
通过返回 null 而不是空字符串来处理没有 a 的字符串的可能性,这是更明确的。
splitOnce("1|Ceci n'est pas une pipe: | Oui", "|")
>>> ["1", "Ceci n'est pas une pipe: | Oui"]
splitOnce("Celui-ci n'a pas de pipe symbol!", "|")
>>> ["Celui-ci n'a pas de pipe symbol!", null]
管道?C'est null!
我添加这个回复主要是为了我可以在管道符号上打个双关语,但也为了炫耀 es6 语法 - 令人惊讶的是有多少人仍然不使用它......
一个班轮和海事组织,更简单:
var str = 'I | am super | cool | yea!';
str.split('|').slice(1).join('|');
这将返回“我超级 | 酷 | 是的!”