0

ファイル内のname=の後の値を取得するために正規表現を取得し、それを置き換える方法。'myfile.txt'というファイルがあります。

public static void main(String[] args)
    File TextFile = new File("C:\\text.txt");
    if (TextFile.exists()) {
        try {
            ReplaceWordInFile(TextFile, "haical", "arnanda");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

private static void ReplaceWordInFile(File MyFile, String OldText, String NewText)
        throws IOException {

    File tempFile = File.createTempFile("filetemp", ".tmp");
    FileWriter fw = new FileWriter(tempFile);

    Reader fr = new FileReader(MyFile);
    BufferedReader br = new BufferedReader(fr);

    while (br.ready()) {
        fw.write(br.readLine().replaceAll(OldText, NewText) + "\n");
    }

    fw.close();
    br.close();
    fr.close();
    tempFile.renameTo(MyFile);
}

ファイルC:\text.txtの内容は次のとおりです。

name = haical
address = Michigan 48309, Amerika Serikat
age = 19
gender = male
activity = school
hoby = hiking, travel

上記の最初の行でプログラムを実行すると、name=haicalはname=arnandaに変わります。

私の問題は、からの値nameが「haical」ではなく別の値であるため、name=blablablaの後に値を取得したいということです。

さらに、ステートメントname = haicalがスペースの数を保持せず、位置を変更する場合があります。

後で出力する内容の例は次のとおりです。

address = Michigan 48309, Amerika Serikat
name   =    haical  
age = 19
gender = male
activity = school
hoby = hiking, travel

したがって、常に最初の行とその後のいくつかのスペースにあるとは限りませんが、 name==で始まる行に常になります。

前もって感謝します。

4

1 に答える 1

1

使用する

....replaceAll("^name\\s*=\\s*" + YourNameVariableToReplace + "\\s*$", "name="+YourNameVariableToInsert)

文字列を置き換えます。名前がRegex-Control-Charsを含んでいる可能性がある場合は、名前を最初にエスケープする必要があるかもしれません。

于 2013-01-11T16:17:04.040 に答える