区切り文字-とに基づいて文字列を分割する必要があり.ます。以下は私の望ましい出力です。
AA.BB-CC-DD.zip ->
AA
BB
CC
DD
zip
しかし、私の次のコードは機能しません。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA/ BB/ CC...)を示しました
区切り文字-とに基づいて文字列を分割する必要があり.ます。以下は私の望ましい出力です。
AA.BB-CC-DD.zip ->
AA
BB
CC
DD
zip
しかし、私の次のコードは機能しません。
private void getId(String pdfName){
String[]tokens = pdfName.split("-\\.");
}
AA/ BB/ CC...)を示しました
回答:
正規表現OR演算子を含める必要があると思います。
String[]tokens = pdfName.split("-|\\.");
一致するもの:
[DASHとDOTが一緒に]
[DASHまたはDOTのいずれか ]で-.
はない、または-.
.正規表現の文字は、改行以外の文字を意味します。tutorialspoint.com/java/java_regular_expressions.htmただし、この場合、実際のキャラクターが必要.でした。2つの円記号は、を参照していることを示しています.。バックスラッシュはエスケープ文字です。
.split("match1|match2")は(たとえばsplit("https|http"))、\\は.上記の場合の特殊文字をエスケープすることです
pdfName.split("\\W");以下のように使用できます@Peter Knego answer
[-.]代わりに使用-|\\.
正規表現「\ W」を使用できます。これは、単語以外の任意の文字に一致します。必要な行は次のようになります。
String[] tokens=pdfName.split("\\W");
\Wです。
指定する文字列splitは正規表現の文字列形式なので、次のようになります。
private void getId(String pdfName){
String[]tokens = pdfName.split("[\\-.]");
}
これは、内の任意の文字で分割することを意味します[](-内部[]では特殊なのでバックスラッシュでエスケープする必要があります。もちろん、これは文字列なのでバックスラッシュをエスケープする必要があります)。(逆に、.通常は特別ですが、内部では特別ではありません[]。)
[-.]範囲として解釈できない可能性があるため、ハイフンをエスケープする必要はありません。
String[] strings = codes.get(x).split("\\[|\\]| ");<-興味のある方のためのコード
デリミタ「AND」と「OR」としての2つの文字シーケンスの場合、これは機能するはずです。使用中にトリミングすることを忘れないでください。
String text ="ISTANBUL AND NEW YORK AND PARIS OR TOKYO AND MOSCOW";
String[] cities = text.split("AND|OR");
結果:都市= {"イスタンブール"、 "ニューヨーク"、 "パリ"、 "東京"、 "モスクワ"}
文字列が常に同じ形式になることがわかっている場合は、最初に文字列を基づいて分割.し、最初のインデックスにある文字列を変数に格納します。次に、-インデックス0、1、2に基づいて2番目のインデックスの文字列を分割し、インデックス0、1、2を格納します。最後に、前の配列のインデックス2を分割して.、関連するすべてのフィールドを取得します。
次のスニペットを参照してください。
String[] tmp = pdfName.split(".");
String val1 = tmp[0];
tmp = tmp[1].split("-");
String val2 = tmp[0];
...
pdfName.split(".")結果は長さがゼロの配列になります。
.エスケープする必要がある\\.