2009-07-16 4 views
2

私はRegExを学ぶ必要がありますが、今はこれを理解する時間がありません。 - 私はコミュニティの能力を活用しようとしています。正規表現を使用して文字列を文字に分割するにはどうすればよいですか?

私は受け入れ可能な1文字のコメント変数のリストを含む文字列を持っています。

String comments = "#;"; 

そして、私が欲しい:

私の問題を解決しますどのような正規表現の文字列
String[] parsedComments = {"#", ";"}; 

String[] parsedComments = comments.split(/* "???" */); 

答えて

4

まず、なぜそれらを配列に分割する必要がありますか?文字列は、インデックスとほぼ同じパフォーマンスで文字を取得するために利用できるメソッドとほぼ同じメソッドを持っています。

しかし、あなたの質問に答えるために:これはあなたの結果の配列の最初のposの余分な空の文字列を与える

string.split(""); 

を。

+0

ありがとう。私はそれが必要以上に複雑になるようにしようとしていたようだ。 – Nate

1

はちょうど私が私のオリジナルの答えであなたを誤解し、[0]、コメント[1] ...コメント[N]

+1

Javaではありません。 cjstehnoの答えを見てください。 –

+0

移動中の言語が多すぎます:) – Lazarus

2

コメントを使用して文字列のインデックスにアクセス。あなたは正規表現を望んでいません。正規表現はパターンを見つけるために使われ、分割するだけです。空の文字列を使うこともできますが、それは文字だけでなく空の文字列も返します。

インデックスにアクセスするだけです。

4

これは、他の奇妙なハックの中で、それを実行する必要があります。

String[] parsedComments = comments.split("(?!^)"); 

をこれは、しかし、ほとんどの正規表現のための仕事ません。文字列全体を繰り返し処理し、各1文字の部分文字列から配列を作成することもできます。

+0

[""、 "#"、 ";"]という結果は "split"の引数として ""を使って得られます。 –

+0

Oy。私はPerlで正規表現をテストしていますが、それはしません。可能であれば空文字列を抑制するように編集しました。 – chaos

+1

"(?<!^)"だけでも同様に動作します。実際、それは見た目にもならない。「(?!^)」も働く。 –

12

なぜ正規表現を使用しますか?たとえばString.toCharArray()を試してください。

+4

あなたは私をスケートしました。 –

+0

私はregexesを使うのは残酷ですが、あなたの例は 'String []'の結果ではなく 'char []'結果を与えることに同意します。 –

+0

それは本当です。しかし、キャラクタ配列は文字列を格納するためのデータ構造としてははるかに優れていますが、あくまでも明白な理由から文字列配列が絶対に必要な場合を除きます。しかし、より直感的な 'char []'型で動作するように、任意のローカルコードを更新することができます。 – soulmerge

2

これを "Daniel"と "Lazarus"にコメントとして追加しようとしましたが、まだ十分な評判ポイントがありません...私が誤解していない限り、あなたはインデックス。あなたはJavaでそれを行うことはできません。

String foo = "abcde"; 
String bee = foo[1]; // not valid 

私はあなたを誤解している場合、私はお詫び申し上げます。もしそうでなければ、私は後世のためにそのことを明確にしたかったのです。 :-)

+0

あなたはそうです:Java文字列は単なる文字列ではありません。文字はそのインデックスでアクセスできますが、charAt()メソッドを使用して行えます。 (代理ペアを許可する場合はcodePointAt()を使用します)。 –