2013-01-08 8 views
6

ここではそうである:JavaScriptで文字によって分割ではなく、連続したもの

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

出力:

hello,goodbye==hello 

連続で/繰り返し文字:

hello,goodbye,,hello 

私はこの出力を必要とします無視しなければならない、ちょうど単一の"="を分割する。

多分いくつかの正規表現ですか?単語の境界について

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

\bチェック:

+1

分割したい '= 'のまわりには常に英数字を使用しますか?あるいは 'hello:=!goodbye'のように' hello: 'と'!goodbye'に分割する必要がありますか? –

答えて

6

あなたは正規表現を使用することができます。

+0

私は、平等記号だけが無視されるべきであり、単語以外の文字は無視されないと思う。 – Bergi

+0

@Bergi私はあなたの問題を確認するのか分からない。あなたは一例を考え出すことができますか? –

+0

ありがとう、素晴らしい解決策! –

3

おそらく@dystroysの回答がお探しのものです。しかし、英数字以外の文字(A-Za-z0-9または_)が「分割=」を囲むことができれば、その解決法は機能しません。だから、これでもかの

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

:たとえば、文字列

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

は、あなたがそれを避けるために必要があるのであれば、あなたが正常に戻り読みアサーションを使用することになり

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

に分割されるだろうは、=を1つに分割するだけです。JavaScriptは(?<!...)ルックバック文字をサポートしていないため、使用できませんアサーション

幸い

、あなたは常に許可されているすべてを照合することによってグローバルmatch()操作にsplit()操作を変換することができ間の区切り文字:

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

はへの第一近似として、あなたに

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

+1私がテストしていた 'split'のlookbehindがなぜ機能していないのか疑問に思っていました。 "Javascriptで動作しません!"どこかに書かれていますか? –

+0

@dystroy:http://www.regular-expressions.info/refflavors.htmlは、これ(またはRegexBuddy)のための私のgo-toリソースです。 –

+2

'match'は通常区切り文字で始まり/終わる文字列を扱う方法では' split'と等価ではありません。また、 'null'を返すこともできます。変換は自明ではありません:-)少なくとも、+ +の代わりに '*'を使う必要があります。 – Bergi

-1

を与えます可能な解決策は次のとおりです。

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

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

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

+0

OPの場合にこの正規表現をどのように使うべきか正確に言えますか? –

+0

@dystroy 'precise'は動詞ではありませんが、あなたのプロフィールを見て、あなたはフランス語を話さなければなりません。 – jackcogdill

+0

@dystroy私はあなたを理解していません。 OPの意味は? プログラムでその正規表現を使用する方法の例を尋ねる場合は、それを見てみましょう。 ファイルの内容:=世界 hell0 == こんにちは、世界 さようなら=残酷==をw0rld BY3 == cru3l = w0rld = == – Ole

関連する問題