web-dev-qa-db-ja.com

String.split()を複数の区切り文字と共に使用する

私は文字列をデリミタ-.で分割する必要があります。以下が私の希望する出力です。

AA.BB-CC-DD.Zip - >

AA
BB
CC
DD
Zip 

しかし、私の次のコードは動作しません。

private void getId(String pdfName){
    String[]tokens = pdfName.split("-\\.");
}
172
Thang Pham

私はあなたが正規表現を含める必要があると思いますOR演算子

String[]tokens = pdfName.split("-|\\.");

あなたが持っているものは一致します:
[DASHとそれに続くDOT] -.
ない
[それらのいずれかをDASHまたはDOT] -または.

285
Richard H

この正規表現"[-.]+"を試してください。 + afterは、連続した区切り文字を1つとして扱います。これが望ましくない場合は、プラスを削除してください。

47
Peter Knego

正規表現 "\ W"を使用できます。これは、Word以外のすべての文字と一致します。必要な行は次のようになります。

String[] tokens=pdfName.split("\\W");
24
Varun Gangal

Guava を使うとこれができます。

Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
12
ColinD

あなたがsplitを与える文字列は正規表現の文字列形式なので、:

private void getId(String pdfName){
    String[]tokens = pdfName.split("[\\-.]");
}

これは[]内の任意の文字を分割することを意味します(-の内側は特殊なので[]をバックスラッシュでエスケープする必要があります。もちろんこれは文字列なのでバックスラッシュをエスケープする必要があります)。 (逆に、.は通常特別ですが、[]の中のではありません specialです。)

10
T.J. Crowder

私はApache Commonsを使います:

org.Apache.commons.lang3.StringUtils;をインポート

private void getId(String pdfName){
    String[] tokens = StringUtils.split(pdfName, "-.");
}

完全な文字列を区切り文字として使用するStringUtils.splitByWholeSeparator(str, separator)とは対照的に、指定された任意の区切り文字に分割されます。

3
Edd

区切り文字としての2文字シーケンス "AND"と "OR"の場合はこれを使うべきです。使用中にトリムすることを忘れないでください。

 String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
 String[] cities = text.split("AND|OR"); 

結果:cities = {"イスタンブール"、 "ニューヨーク"、 "パリ"、 "東京"、 "モスクワ"}

3
ÖMER TAŞCI

Split()メソッドの引数として正規表現を指定することもできます。以下の例を参照してください。

private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
1
Avdhesh Yadav

このコードを試してください:

var string = 'AA.BB-CC-DD.Zip';
array = string.split(/[,.]/);
0
Newbie

このようなものを使うのが良いです:

s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");

サンプルとして他のいくつかの文字を追加しました。 .'が扱われるので、これが最も安全な使用方法です。

0
Pritam Banerjee
String[] token=s.split("[.-]");
0
Nitish
s.trim().split("[\\W]+") 

うまくいくはずです。

0
sss