9

ファイル名を生成し、文字列変数パスに保存しました。

path=path.replaceAll('\','/') 

しかし、これは機能しません

4

7 に答える 7

43

replaceAll()Stringsパラメータとして必要です。だから、あなたが書くなら

path = path.replaceAll('\', '/');

あなたが書くべきだったのでそれは失敗します

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

ただし、文字「\」は「\\」と入力する必要があるため、これも失敗します。

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

PatternSyntaxExceptionまた、fisrは正規表現であるため、実行中に失敗し、が表示されStringます(@Bhavik Shahに指摘していただきありがとうございます)。それで、@ jlordoが彼の答えで与えたように、それを正規表現として書く:

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

あなたが探していたものです。

コアを最適化するには、オペレーティングシステムから独立させる必要があるため、@ThaiTranのヒントを使用してください。

path = path.replaceAll("\\\\", File.separator);

しかし、これはスローに失敗しますStringIndexOutOfBoundsException(理由はわかりません)。replace()正規表現なしで使用する場合に機能します。

path = path.replace("\\", File.separator);
于 2012-10-31T08:23:50.180 に答える
13

ファイルパスの場合は、「\」ではなく「File.separator」を試してください(アプリケーションがNixプラットフォームで動作する場合)

于 2012-10-31T08:19:33.187 に答える
8

path=path.replaceAll('\','/');バックスラッシュをエスケープする必要があるため、コンパイルされません。

使用しますpath=path.replace('\\','/');(すべてのオクラレンスを置き換えます。JavaDocを参照してください)

またはpath=path.replaceAll("\\\\", "/");(この正規表現はバックスラッシュをエスケープします);-)

コメントには、1つの「\」の正しい正規表現を作成するために「\」の4つが必要な理由が説明されています。

于 2012-10-31T08:28:00.537 に答える
2

この方法を使用してreplace、円記号をエスケープする必要があります。

path = path.replace('\\', '/');

ドキュメントを参照してください:

public String replace(char oldChar, char newChar)

この文字列内で出現するすべてのoldCharをnewCharに置き換えた結果の新しい文字列を返します。

于 2012-10-31T08:15:27.683 に答える
1

これはファイルパスであるため、この操作を行う必要はまったくありません。Javaは両方の構文を理解します。ファイルをURLまたはURIに変換しようとしている場合は、それを行うためのメソッドがあります。

于 2012-10-31T09:55:24.863 に答える
-1

これ\は、Javaの単なる文字ではありません。

それにはその意味があり、前に付けられたいくつかの文字に\は特別な意味があります、

詳細については、こちらの セクションescape sequenceを参照してください

\したがって、コードだけで使用したい場合は、その実装\\があります。

だから交換する

path=path.replaceAll("\","/") 

path=path.replaceAll("\\","/") 

そして、これは実行中に失敗しPatternSyntaxException、最初の文字列は正規表現であるため、@ jlordoの回答に基づいて、これが次の方法になります。

path = path.replaceAll("\\\\", "/");
于 2012-10-31T08:19:13.827 に答える
-1
   String s="m/j/"; 
   String strep="\\\\";
   String result=s.replaceAll("/", strep);
    System.out.println(result);
于 2012-10-31T09:20:37.300 に答える