8

テキストの行を複数の部分に分割しようとしています。テキストの各要素はピリオドで区切られます。string.split( "。");を使用しています。テキストを文字列の配列に分割しますが、どこにも到達しません。

コードのサンプルは次のとおりです。

String fileName = "testing.one.two";

String[] fileNameSplit = fileName.split(".");

System.out.println(fileNameSplit[0]);

面白いのは、「。」の代わりに「:」を試してみると、うまくいくのでしょうか。どうすればそれを一定期間機能させることができますか?

4

6 に答える 6

33

String.split()正規表現(略してregex)を受け入れ、 dotは正規表現の特殊文字です。「改行を除くすべての文字に一致する」という意味です。したがって、先頭の円記号でエスケープする必要があります。ただし、先頭の円記号は、Java文字列リテラルの特殊文字です。エスケープシーケンスを示します。したがって、別の主要なバックスラッシュを使用して、それもエスケープする必要があります。このような:

fileName.split("\\.");
于 2012-11-19T19:20:37.260 に答える
6

これを試してください:fileName.split("\\.");

于 2012-11-19T19:20:31.217 に答える
3
fileName.split(".");

する必要があります

fileName.split("\\.");

は特殊文字であり、split()は正規表現を受け入れます。したがって、特殊文字をエスケープする必要があります。

バックスラッシュが前に付いた文字(\)はエスケープシーケンスであり、コンパイラにとって特別な意味があります。このドキュメントをお読みください。

于 2012-11-19T19:20:28.653 に答える
3

これsplitは、toの引数が正規表現であり、.基本的に任意の文字を意味するためです。"\\."の代わりに使用すると"."、正常に動作するはずです。

(任意の文字ではなく)リテラルピリオドの正規表現は次のとおり.です\.(エスケープ文字を使用すると\、リテラルの解釈が強制されます)。

そして、それはすでに特別な意味を持っている文字列内にあるので、それもエスケープする\必要があります。

于 2012-11-19T19:22:28.903 に答える
1

「。」をエスケープする必要があります。splitは正規表現と。を受け入れるため、文字。は任意の文字を意味するため、splitメソッドにポイントで分割するように指示するには、次のようにエスケープする必要があります。

String[] array = string.split('\\.');
于 2012-11-19T19:25:39.393 に答える
0

split()はパラメータに正規表現を取ります

試してみてください

String[] fileNameSplit = fileName.split("\\.");
于 2012-11-19T19:25:32.333 に答える