5

入力ファイルを取得し、その名前の最後に番号を追加して、出力ファイルとして使用する必要があります。これを実現するために、次のコードを使用します。

String delimiter = ".";
String[] splitInput = inputLocation.split(delimiter);
String outputLocation = splitInput[0];

次の例外が発生します。

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0

次のステートメントを追加して、splitInput 配列の長さを確認したところ、出力として 0 が得られました。

System.out.println(splitInput.length);

後で、区切り文字として「.x」を使用しました(私のファイルは.xlsです)。「.x」を使用して目的を達成できますが、「.」を使用しない理由が知りたいです。仕事?

4

4 に答える 4

12

このsplit関数は正規表現を使用するため、「.」をエスケープする必要があります。とともに "\"

正規表現を使用する場合は「.」任意の文字を意味します。これを試して

String delimiter = "\\.x";

\Java では、他の特殊文字を作成するために使用される特殊文字でもあることに注意してください。したがって 、あなた\は別の人と一緒に逃げなければなりません。\"\\.x"


Java ドキュメントには、すべての特殊文字とその機能に関する優れたドキュメントがいくつかあります。

Java 8 ドキュメント
Java 7 ドキュメント
Java 6 ドキュメント

于 2013-09-06T17:49:20.710 に答える
2

には.特別な意味があります: 任意の文字 (改行文字と一致する場合と一致しない場合があります)。先頭に追加するか、次を使用してエスケープでき\ ます。

[.]x

例えば:

String delimiter = "[.]x";

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.htmlで詳細を参照してください。

于 2013-09-06T17:56:38.893 に答える
1

.正規表現では任意の文字と見なされます。特別な意味を上書きしたい場合は、エスケープ文字\(これも としてエスケープする必要があります) を使用してください。\\

于 2013-09-06T17:49:43.060 に答える
1

String.split()入力として正規表現が必要です。Java 正規表現では、.文字は特殊文字です。したがって、分割ステートメントは期待どおりに機能していません。「。」をエスケープする必要があります。として\\.

于 2013-09-06T17:51:43.657 に答える