1

私はJavaの初心者です。ユーザーがファイルパス、置換する文字列、および置換する文字列を指定する文字列置換コードがあります。コードは .txt または .in ファイルで問題なく動作します。しかし、コードを書くつもりだった .java ファイルを編集しようとすると、どういうわけか編集できません。実際に問題がどこにあるかを誰かが提案できますか? 私のコードは次のようになります。

import java.io.*;
import java.util.*;
public class StringReplace{
    public static void main(String[] args) throws IOException
    {
        System.out.println("Enter path of file:");
        Scanner sc=new Scanner(System.in);
        String path=sc.nextLine();
        File f=new File(path);
        if (f.canRead())
        {
            System.out.print("Now enter the string to replace:_");
            String oldString=sc.nextLine();
            System.out.print("Now enter the string to replace with:_");
            String newString=sc.nextLine();
            StringBuffer sb=new StringBuffer();
            sc=new Scanner(f);
            sc.useDelimiter("");
            while(sc.hasNext())
            {
                sb.append(sc.next());
            }
            sc.close();
            FileWriter fw=new FileWriter(path);
            PrintWriter pw=new PrintWriter(fw,true);
            System.out.println(sb);
            pw.println(sb.toString().replaceAll(oldString, newString));
            fw.close();
            pw.close();
            System.out.print("DONE!");
        }
        else
            System.out.println("File Does Not Exist");
        }
    }
}
4

1 に答える 1

1

コメントにあるように、「.java」ファイルと他のテキスト ファイルに違いはありません。

問題は、エディター アプリケーションが実際には、単純な文字列の検索/置換ではなく、正規表現の検索/置換を行うようにコーディングされていることに気付いていないことだと思います。(それがString.replaceAll(...)...) 正規表現メタ文字を含む「置換する文字列」を無意識に提供すると、それが一致しないか、予期しない場所で一致することに気付く場合があります。

于 2012-08-25T15:11:17.993 に答える