Java 替换文本文件中的特定字符串
我试图替换给定文本文件中出现的某个字符串。以下是我编写的代码:Java 替换文本文件中的特定字符串,java,regex,string,Java,Regex,String,我试图替换给定文本文件中出现的某个字符串。以下是我编写的代码: BufferedReader tempFileReader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile))); File tempFileBuiltForUse = new File("C:\\testing\\anotherTempFile.txt"); Writer changer = new BufferedWriter(new
BufferedReader tempFileReader = new BufferedReader(new InputStreamReader(new FileInputStream(tempFile)));
File tempFileBuiltForUse = new File("C:\\testing\\anotherTempFile.txt");
Writer changer = new BufferedWriter(new FileWriter(tempFileBuiltForUse));
String lineContents ;
while( (lineContents = tempFileReader.readLine()) != null)
{
Pattern pattern = Pattern.compile("/.");
Matcher matcher = pattern.matcher(lineContents);
String lineByLine = null;
while(matcher.find())
{
lineByLine = lineContents.replaceAll(matcher.group(),System.getProperty("line.separator"));
changer.write(lineByLine);
}
}
changer.close();
tempFileReader.close();
假设我的tempFile
的内容是:
This/DT is/VBZ a/DT sample/NN text/NN ./.
我希望另一个tempFile
包含:
此/DT为/VBZ a/DT示例/NN文本/NN。
用一条新的线
但是我没有得到想要的输出。我看不出我错在哪里-(
请帮忙。:-点在正则表达式中表示“每个字符”。试着逃避它:
Pattern pattern = Pattern.compile("\\./\\.");
(您需要两个反斜杠来转义字符串中的反斜杠本身,这样Java就知道您想要一个反斜杠而不是一个特殊字符作为换行符,例如,\n
在正则表达式中,点(
)匹配任何字符(换行符除外),因此,如果希望它与文字点匹配,则需要对其进行转义。此外,您似乎缺少正则表达式中的第一个点,因为您希望模式匹配:
Pattern pattern = Pattern.compile("\\./\\.");
/。
是正则表达式\[任何符号]
。
更改为“/\”您的正则表达式有问题。此外,您不必使用模式和匹配器。只需使用String类的replaceAll()方法进行替换。这会更简单。请尝试以下代码:
tempFileReader = new BufferedReader(
new InputStreamReader(new FileInputStream("c:\\test.txt")));
File tempFileBuiltForUse = new File("C:\\anotherTempFile.txt");
Writer changer = new BufferedWriter(new FileWriter(tempFileBuiltForUse));
String lineContents;
while ((lineContents = tempFileReader.readLine()) != null) {
String lineByLine = lineContents.replaceAll("\\./\\.", System.getProperty("line.separator"));
changer.write(lineByLine);
}
changer.close();
tempFileReader.close();
好得多。但是现在,生成的输出是换行符中的每个单词。仍然不是我想要的。只是一个小的编辑,用于匹配模式。只是用于/。
这将与您以前建议的相同吗?