2013-01-15 1 views
6

可能な重複は:
エスケープ文字を使用してJavaScriptの分割方法を使用するにはどうすればよいですか?

how to split a string in js with some exceptions

例えば文字列がある場合:

abc&def&ghi\&klm&nop 

必要な出力は、文字列の配列である

['abc', 'def', 'ghi\&klm', 'nop] 

私には最も簡単な解決策を提案してください。

+0

この答えは、Javaに適用されますが、それは同じ問題に取り組むんし、翻訳することは困難ではありません。http://stackoverflow.com/questions/3870415/split-a-string-that-escape-sequence-in-java- –

+3

@cheeseweasel残念ながら、jsは "否定的なlookbehind"を実装していないので、翻訳するのは簡単ではありません。 ;) – Yoshi

+1

いくつかの参考になる読書:[JavaScriptのルックバックを模倣する](http://blog.stevenlevithan.com/archives/mimic-lookbehind-javascript) – Yoshi

答えて

-2

はこの試してみてください。ここでは

var v = "abc&def&ghi\&klm&nop"; 
var s = v.split("&"); 
for (var i = 0; i < s.length; i++) 
    console.log(s[i]); 
5

を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"] 

4

を必要とする配列が含まれていますダブルスラッシュと\ &を交換する必要がありますあなたの文字列外部ソースからのもので、javascriptのリテラルではありません。

あなたが唯一のオールドスクールのindexOfで行うことができます
0

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); 
関連する問題