这个问题在这里已有答案:
我试图基于引用How split a string in jquery with multiple strings as separator的多个分隔符来分割字符串,但我需要包含一个反斜杠作为分隔符。
我有这个
var x = 'a/b\c?d@f#g$h%i^j&k:m;n,l.o(p)q{r}t!u`v~x-y+z=A*B_C|D"E\'F G';
var separators = ['/','\\\\','\\\?','@','#','\\\$','%','\\\^','&',':',';',',','\\\.','\\\(','\\\)','{','}','!','`','~','-','\\\+','=','\\\*','_','\\\|','\\\"','\\\'',' '];
console.log(separators.join('|'));
var tokens = x.split(new RegExp(separators.join('|'), 'g'));
console.log(tokens);
这是我的结果
["a", "bc", "d", "f", "g", "h", "i", "j", "k", "m", "n", "l", "o", "p", "q", "r", "t", "u", "v", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G"]
请注意,b \ c未被拆分
我在分隔符列表中尝试了'\\\','\\'和'\',但没有任何效果。
谢谢
根据Pushpesh Kumar Rajwanshi的回答,\
充当逃脱角色。以下注释与\\
作为有效的分隔符现在有效。
另见:How to split a string with a backslash in javascript?
var x = 'a/b\\c?d@f#g$h%i^j&k:m;n,l.o(p)q{r}t!u`v~x-y+z=A*B_C|D"E\'F G';
var separators = ['/','\\\\','\\\?','@','#','\\\$','%','\\\^','&',':',';',',','\\\.','\\\(','\\\)','{','}','!','`','~','-','\\\+','=','\\\*','_','\\\|','\\\"','\\\'',' '];
console.log(separators.join('|'));
var tokens = x.split(new RegExp(separators.join('|'), 'g'));
console.log(tokens);