可能重复:
如何在 js 中拆分字符串,但有一些例外
例如,如果字符串是:
abc&def&ghi\&klm&nop
所需的输出是字符串数组
['abc', 'def', 'ghi\&klm', 'nop]
请建议我最简单的解决方案。
可能重复:
如何在 js 中拆分字符串,但有一些例外
例如,如果字符串是:
abc&def&ghi\&klm&nop
所需的输出是字符串数组
['abc', 'def', 'ghi\&klm', 'nop]
请建议我最简单的解决方案。
你需要match
:
"abc&def&ghi\\&klm&nop".match(/(\\.|[^&])+/g)
# ["abc", "def", "ghi\&klm", "nop"]
我假设您的字符串来自外部来源,而不是 javascript 文字。
这是 JavaScript 中的一个解决方案:
var str = 'abc&def&ghi\\&klm&nop',
str.match(/([^\\\][^&]|\\&)+/g); //['abc', 'def', 'ghi\&klm', 'nop]
它用于match
匹配所有字符([not \ and &] or [\ and &])
。
var str = "abc&def&ghi\\&klm&nop";
var test = str.replace(/([^\\])&/g, '$1\u000B').split('\u000B');
您需要用双斜杠替换 \&
test 将包含您需要的数组
您只能使用 oldschool indexOf:
var s = 'abc&def&ghi\\&klm&nop',
lastIndex = 0,
prevIndex = -1,
result = [];
while ((lastIndex = s.indexOf('&', lastIndex+1)) > -1) {
if (s[lastIndex-1] != '\\') {
result.push(s.substring(prevIndex+1, lastIndex));
prevIndex = lastIndex;
}
}
result.push(s.substring(prevIndex+1));
console.log(result);
尝试这个 :
var v = "abc&def&ghi\&klm&nop";
var s = v.split("&");
for (var i = 0; i < s.length; i++)
console.log(s[i]);