如何让正则表达式获取文件中 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 = 开头。
提前致谢。
答案 0 :(得分:1)
使用
....replaceAll("^name\\s*=\\s*" + YourNameVariableToReplace + "\\s*$", "name="+YourNameVariableToInsert)
替换字符串。如果他可能包含Regex-Control-Chars,也许你需要逃避Name First。