可能な重複は:
how to split a string in js with some exceptions
エスケープ文字を使用してJavaScriptの分割方法を使用するにはどうすればよいですか?
例えば文字列がある場合:
abc&def&ghi\&klm&nop
必要な出力は、文字列の配列である
['abc', 'def', 'ghi\&klm', 'nop]
私には最も簡単な解決策を提案してください。
可能な重複は:
how to split a string in js with some exceptions
エスケープ文字を使用してJavaScriptの分割方法を使用するにはどうすればよいですか?
例えば文字列がある場合:
abc&def&ghi\&klm&nop
必要な出力は、文字列の配列である
['abc', 'def', 'ghi\&klm', 'nop]
私には最も簡単な解決策を提案してください。
はこの試してみてください。ここでは
var v = "abc&def&ghi\&klm&nop";
var s = v.split("&");
for (var i = 0; i < s.length; i++)
console.log(s[i]);
をJavaScriptでのソリューションです:
var str = 'abc&def&ghi\\&klm&nop',
str.match(/([^\\\][^&]|\\&)+/g); //['abc', 'def', 'ghi\&klm', 'nop]
それは([not \ and &] or [\ and &])
されているすべての文字を一致させるためにmatch
を使用しています。私は
"abc&def&ghi\\&klm&nop".match(/(\\.|[^&])+/g)
# ["abc", "def", "ghi\&klm", "nop"]
:
var str = "abc&def&ghi\\&klm&nop";
var test = str.replace(/([^\\])&/g, '$1\u000B').split('\u000B');
あなたが
how to split a string in js with some exceptions
テストはあなたがmatch
必要あなたが
を必要とする配列が含まれていますダブルスラッシュと\ &を交換する必要がありますあなたの文字列外部ソースからのもので、javascriptのリテラルではありません。
あなたが唯一のオールドスクールの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);
この答えは、Javaに適用されますが、それは同じ問題に取り組むんし、翻訳することは困難ではありません。http://stackoverflow.com/questions/3870415/split-a-string-that-escape-sequence-in-java- –
@cheeseweasel残念ながら、jsは "否定的なlookbehind"を実装していないので、翻訳するのは簡単ではありません。 ;) – Yoshi
いくつかの参考になる読書:[JavaScriptのルックバックを模倣する](http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript) – Yoshi