我正在尝试通过引用Multi-tenant app with database-per-tenant来基于多个定界符来分割字符串,但是我需要包括一个反斜杠作为定界符。
我有这个
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没有分裂
我在分隔符列表中尝试了'\\\','\\'和'\',但没有任何效果。
谢谢
答案 0 :(得分:0)
根据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);