0

この文字列の問題が Windows でのみ発生するのはなぜですか?

ファイルセパレーターを置き換えるにはどうすればよいですか? 以下の方法は両方ともうまくいきません。

エラーは次のとおりです。

java.util.regex.PatternSyntaxException: インデックス 1 付近で予期しない内部エラーが発生しました。

String s ="pathoffile";

if(File.separator.equals("\\"))
   s= s.replaceAll(File.separator,"/");


if(File.separator.equals("\\"))
   s= s.replaceAll("\\","/");
4

1 に答える 1

3

正規表現でバックスラッシュを2 回エスケープする必要があります。

 s= s.replaceAll("\\\\","/");

一度、バックスラッシュを文字列に入れます。

2 回、正規表現には のような特殊な文字クラスが\dあり、それらはバックスラッシュで始まるため、リテラルのバックスラッシュは\\.

しかし、おそらく本当にすべきことは、単一の文字を置き換えるために正規表現をまったく使用しないことです。

s = s.replace('\\', '/');
于 2012-10-24T04:05:58.033 に答える