6

私は次のことをしているケースがあります:

final String[] columns = row.split(delimiter.toString());

delimiterキャラクターはどこですか。

\t区切り文字として提供することにより、タブに基づいて分割する必要がある場合、これはうまく機能します。ただし、パイプで分割したい場合は、区切り文字を渡しますが、|期待どおりに機能しません。

null または空を意味する特殊文字についていくつかの投稿を読んだこと|があります。そのため、遭遇するすべての文字で分割されますが、この動作は望ましくありません。

このパイプ ケースのコードで簡単なチェックを行い、問題を回避できます。

if ("|".equals(delimiter.toString())) {
    columns = row.split("\\" + delimiter.toString());
}
else {
    columns = row.split(delimiter.toString());
} 

しかし、これを回避する簡単な方法があるかどうかはわかりませんでした。|また、私が考慮する必要があるように振る舞う他の特殊文字はありますか?

4

2 に答える 2

18

試す:

import java.util.regex.Pattern;

...

final String[] columns = row.split(Pattern.quote(delimiter.toString()));

他のmetacharactersに関しては、呼ばれているように、文字列リテラルチュートリアルからの引用を次に示します。

この API は、パターンの照合方法に影響を与える多くの特殊文字もサポートしています。

...

この API でサポートされているメタ文字は次のとおりです: <([{\^-=$!|]})?*+.>

見る:

于 2013-05-13T14:59:34.047 に答える