区切り文字-
とに基づいて文字列を分割する必要があり.
ます。以下は私の望ましい出力です。
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(".")
結果は長さがゼロの配列になります。
.
エスケープする必要がある\\.