web-dev-qa-db-ja.com

文字列をJavaで複数の記号に分割する

記号の後に "+、-、*、/、="が出現したときに文字列を分割したいのですが、split関数を使用していますが、この関数は引数を1つしか取ることができません。さらに、 "+"では機能しません。私は次のコードを使用しています:-

Stringname.split("Symbol");

ありがとう。

16
Saumyaraj

String.splitは、引数として正規表現を取ります。

これは、Stringを分割するために、1つのパラメーターで任意のシンボルまたはテキストの抽象化を代替できることを意味します。

ドキュメントを参照 here

これがあなたのケースの例です:

String toSplit = "a+b-c*d/e=f";
String[] splitted = toSplit.split("[-+*/=]");
for (String split: splitted) {
    System.out.println(split);
}

出力:

a
b
c
d
e
f

ノート:

  • Patternsの予約文字は、\\でダブルエスケープする必要があります。 編集:ここでは必要ありません。
  • パターンの[]括弧は、文字クラスを示します。
  • Patternsの詳細 ここ
41
Mena

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

String[] tokens = input.split("[+*/=-]");

注意: -は、範囲区切り文字と見なされないように、最初または最後の位置に配置する必要があります。

9
assylias

正規表現が必要です。さらに、正規表現OR演算子が必要です。

String[]tokens = Stringname.split("\\+|\\-|\\*|\\/|\\=");
5
Dennis Kriechel

そのためには、適切な正規表現ステートメントを使用する必要があります。リストした記号のほとんどは正規表現で予約されているため、\でエスケープする必要があります。

非常にベースラインの式は\+|\-|\\|\*|\=になります。比較的理解しやすく、必要な各記号は\でエスケープされ、各記号は|(または)記号で区切られます。たとえば、^も追加したい場合は、そのステートメントに|\^を追加するだけです。

テストと迅速な表現のために、私はwww.regexpal.comを使用するのが好きです

1
Deactivator2