6

ケースは次のとおりです。

var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");

出力:

hello,goodbye,,hello

この出力が必要です:

hello,goodbye==hello

連続した/繰り返される文字は無視する必要があります"="。分割するには単一の文字を使用してください。

多分いくつかの正規表現?

4

3 に答える 3

6

正規表現を使用できます:

var parts = stringExample.split(/\b=\b/);

\b単語の境界をチェックします。

于 2013-01-08T14:45:35.737 に答える
3

おそらく、@dystroysの答えはあなたが探しているものです。ただし、英数字( A-Z、、、または)以外の文字が「分割」を囲む可能性がある場合、彼のソリューションは機能しません。たとえば、文字列a-z0-9_=

It's=risqué=to=use =Unicode!=See?

に分割されます

"It's", "risqué=to", "use Unicode!=See?"

したがって、それを回避する必要がある場合は、通常、後読みアサーションを使用します。

result = subject.split(/(?<!=)=(?!=)/);  // but that doesn't work in JavaScript!

したがって、これ単一のsでのみ分割されますが、JavaScriptは後読みアサーション=をサポートしていないため、使用できません。(?<!...)

幸い、区切り文字で許可されているすべてのものを照合することで、split()操作をグローバル操作にいつでも変換できます。match()

result = subject.match(/(?:={2,}|[^=])*/g);

あなたに与える

"It's", "risqué", "to", "use ", "Unicode!", "See?"
于 2013-01-08T15:03:03.223 に答える
-1

考えられる解決策の最初の近似として、次のようになります。

".*[^=]=[^=].*"

これは単なる正規表現であることに注意してください。egrep、sed、java regexなどで使用する場合は、何かをエスケープする必要がある場合は注意してください。

注意!:これは最初の概算であり、改善される可能性があります。たとえば、この正規表現はこの文字列 "="(null-equal-null)とは一致しないことに注意してください。

于 2013-01-08T15:29:33.200 に答える