私は文字列をデリミタ-
と.
で分割する必要があります。以下が私の希望する出力です。
AA.BB-CC-DD.Zip
- >
AA
BB
CC
DD
Zip
しかし、私の次のコードは動作しません。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
私はあなたが正規表現を含める必要があると思いますOR演算子:
String[]tokens = pdfName.split("-|\\.");
あなたが持っているものは一致します:
[DASHとそれに続くDOT] -.
ない
[それらのいずれかをDASHまたはDOT] -
または.
この正規表現"[-.]+"
を試してください。 + afterは、連続した区切り文字を1つとして扱います。これが望ましくない場合は、プラスを削除してください。
正規表現 "\ W"を使用できます。これは、Word以外のすべての文字と一致します。必要な行は次のようになります。
String[] tokens=pdfName.split("\\W");
Guava を使うとこれができます。
Iterable<String> tokens = Splitter.on(CharMatcher.anyOf("-.")).split(pdfName);
あなたがsplit
を与える文字列は正規表現の文字列形式なので、:
private void getId(String pdfName){
String[]tokens = pdfName.split("[\\-.]");
}
これは[]
内の任意の文字を分割することを意味します(-
の内側は特殊なので[]
をバックスラッシュでエスケープする必要があります。もちろんこれは文字列なのでバックスラッシュをエスケープする必要があります)。 (逆に、.
は通常特別ですが、[]
の中のではありません specialです。)
私はApache Commonsを使います:
org.Apache.commons.lang3.StringUtils;
をインポート
private void getId(String pdfName){
String[] tokens = StringUtils.split(pdfName, "-.");
}
完全な文字列を区切り文字として使用するStringUtils.splitByWholeSeparator(str, separator)
とは対照的に、指定された任意の区切り文字に分割されます。
区切り文字としての2文字シーケンス "AND"と "OR"の場合はこれを使うべきです。使用中にトリムすることを忘れないでください。
String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
String[] cities = text.split("AND|OR");
結果:cities = {"イスタンブール"、 "ニューヨーク"、 "パリ"、 "東京"、 "モスクワ"}
Split()メソッドの引数として正規表現を指定することもできます。以下の例を参照してください。
private void getId(String pdfName){
String[]tokens = pdfName.split("-|\\.");
}
このコードを試してください:
var string = 'AA.BB-CC-DD.Zip';
array = string.split(/[,.]/);
このようなものを使うのが良いです:
s.split("[\\s\\-\\.\\'\\?\\,\\_\\@]+");
サンプルとして他のいくつかの文字を追加しました。 .
と'
が扱われるので、これが最も安全な使用方法です。
String[] token=s.split("[.-]");
s.trim().split("[\\W]+")
うまくいくはずです。