我正在尝试更改txt文件中的部分行。它工作正常,但如果文件中的行包含特殊字符,如?!(它不起作用 有什么问题?
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStreamReader;
public class nomarks
{
public static void main(String[] args)
{
FileInputStream fstream;
try
{
fstream = new FileInputStream("readme.txt");
BufferedReader br = new BufferedReader(new InputStreamReader(fstream));
String oldText = "i have !? in my text";
String textToChange = "cant solve the problem";
String line;
String holeFile = "";
while ((line = br.readLine()) !=null)
{
holeFile += line + "\r\n";
}
br.close();
FileWriter writer = new FileWriter("readme.txt");
String newtext = holeFile.replaceAll(oldText, textToChange);
writer.write(newtext);
writer.close();
} catch (IOException e)
{
e.printStackTrace();
}
}
}
答案 0 :(得分:1)
您可以使用holeFile.replaceAll(Pattern.quote(oldText), textToChange)
答案 1 :(得分:0)
在您的案例中使用replace
:
String newtext = holeFile.replace(oldText, textToChange);
replaceAll
使用regexp
(并且您的字符串中有问号),这就是您可能遇到问题的原因。
请参阅文档here,
答案 2 :(得分:0)
带有.replaceAll(String regex, String replacement)
的问题是它将正则表达式作为第一个参数。因此,假设您要完全匹配i have !? in my text
。您需要将其更改为正则表达式(如果您愿意)文本。
因此,简而言之,您需要将此代替:i have !? in my text
:i have !\\? in my text