8

重複の可能性:
いくつかの例外を除いて js で文字列を分割する方法

たとえば、文字列が次の場合:

abc&def&ghi\&klm&nop

必要な出力は文字列の配列です

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

最も簡単な解決策を教えてください。

4

5 に答える 5

9

必要なものmatch:

 "abc&def&ghi\\&klm&nop".match(/(\\.|[^&])+/g)
 # ["abc", "def", "ghi\&klm", "nop"]

あなたの文字列は外部ソースからのものであり、javascript リテラルではないと想定しています。

于 2013-01-15T08:51:35.020 に答える
6

JavaScriptの解決策は次のとおりです。

var str = 'abc&def&ghi\\&klm&nop',
str.match(/([^\\\][^&]|\\&)+/g); //['abc', 'def', 'ghi\&klm', 'nop]

matchであるすべての文字を照合するために使用します([not \ and &] or [\ and &])

于 2013-01-15T08:45:17.110 に答える
2
  var str = "abc&def&ghi\\&klm&nop";
  var test = str.replace(/([^\\])&/g, '$1\u000B').split('\u000B');

\& を二重スラッシュに置き換える必要があります

いくつかの例外を除いて、js で文字列を分割する方法

test には必要な配列が含まれます

于 2013-01-15T08:49:36.177 に答える
1

古い学校の 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);
于 2013-01-15T08:57:02.650 に答える
-7

これを試して :

var v = "abc&def&ghi\&klm&nop";
var s = v.split("&");
for (var i = 0; i < s.length; i++)
    console.log(s[i]);
于 2013-01-15T08:39:13.827 に答える