ファイル名を生成し、文字列変数パスに保存しました。
path=path.replaceAll('\','/')
しかし、これは機能しません
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);
ファイルパスの場合は、「\」ではなく「File.separator」を試してください(アプリケーションがNixプラットフォームで動作する場合)
path=path.replaceAll('\','/');
バックスラッシュをエスケープする必要があるため、コンパイルされません。
使用しますpath=path.replace('\\','/');
(すべてのオクラレンスを置き換えます。JavaDocを参照してください)
またはpath=path.replaceAll("\\\\", "/");
(この正規表現はバックスラッシュをエスケープします);-)
コメントには、1つの「\」の正しい正規表現を作成するために「\」の4つが必要な理由が説明されています。
この方法を使用してreplace
、円記号をエスケープする必要があります。
path = path.replace('\\', '/');
ドキュメントを参照してください:
public String replace(char oldChar, char newChar)
この文字列内で出現するすべてのoldCharをnewCharに置き換えた結果の新しい文字列を返します。
これはファイルパスであるため、この操作を行う必要はまったくありません。Javaは両方の構文を理解します。ファイルをURLまたはURIに変換しようとしている場合は、それを行うためのメソッドがあります。
これ\
は、Javaの単なる文字ではありません。
それにはその意味があり、前に付けられたいくつかの文字に\
は特別な意味があります、
詳細については、こちらの セクションescape sequence
を参照してください
\
したがって、コードだけで使用したい場合は、その実装\\
があります。
だから交換する
path=path.replaceAll("\","/")
と
path=path.replaceAll("\\","/")
そして、これは実行中に失敗しPatternSyntaxException
、最初の文字列は正規表現であるため、@ jlordoの回答に基づいて、これが次の方法になります。
path = path.replaceAll("\\\\", "/");
String s="m/j/";
String strep="\\\\";
String result=s.replaceAll("/", strep);
System.out.println(result);