1

ディレクトリを表す文字列があり、\フォルダを区切るために使用されます。に基づいて分割したい"\\"

String address = "C:\\saeed\\test";
String[] splited = address.split("\\");

しかし、これは私にjava.util.regex.PatternSyntaxException.

4

5 に答える 5

7

他の人が示唆しているように、次を使用できます。

String[] separated = address.split("\\\\");

または、次を使用できます。

String[] separated = address.split(Pattern.quote("\\")); 

また、参考までに:

String address = "C:\saeed\test";

\sは有効なエスケープ シーケンスではないため、コンパイルされません。\tこれはタブ文字として解釈されます。実際に必要なのは次のとおりです。

String address = "C:\\saeed\\test";

これで、 を で取得する\にはString、 が必要であることがわかりました"\\"

バックスラッシュは正規表現の特殊文字であるため、正規表現は\\単一のバックスラッシュと一致するため、エスケープ\する必要があります。これを引用符で囲んだり、 に変換したりしたら、String各バックスラッシュをエスケープして、 を生成する必要があります"\\\\"

于 2013-08-10T20:26:01.863 に答える
3

String#split()メソッドは正規表現を取ります。正規表現では、バックスラッシュをエスケープする必要があります。Java の文字列リテラルでは、バックスラッシュをエスケープする必要があります。全部で 4 つのバックスラッシュを使用する必要があります。

String[] splited = address.split("\\\\");
于 2013-08-10T20:23:37.770 に答える
1

\正規表現の一部として意味があるため、これも引用する必要があります。試してみてください\\\\

Java には atがあり、正規表現プロセッサが取得する必要があるもの\\\\を生成します。\\\

于 2013-08-10T20:24:49.793 に答える
1

\\\\の代わりに使用する必要があります\\

バックスラッシュ (\) は Java Strings のエスケープ文字です。バックスラッシュをリテラルとして使用する場合は、\\\\ と入力する必要があります。\ は正規表現のエスケープ文字でもあるためです。

詳細については、ここをクリックしてください

于 2013-08-10T20:24:05.443 に答える
0

区切り記号を使用する:

String address = "C:\saeed\test";
String[] splited = address.split(System.getProperty("file.separator"));
于 2013-08-10T20:24:13.813 に答える