环境:Windows,Java 1.8
我正在阅读文件的内容,并尝试格式化行并删除标签,但replaceAll
它无效。
我尝试过:
BufferedReader bf = FileUtils.getBufferedReader(filePath);
String line;
try {
while ((line = bf.readLine()) != null )
{
if(line.matches(".*=.*"))
{
// this is a simple test scenario
String test = "\tVERSION=version";
test.trim();
test.replaceAll("\t", "");
line.trim();
line.replaceAll("\\t", "");
}
}
} catch (IOException e) {
System.err.println("[ERROR] : Could not read from file <" + filePath + ">!\n");
System.exit(0);
}
我查看调试器并且没有替换标签。在测试场景中,我尝试使用\t
和\\t
变体但没有成功。我做错了吗?
答案 0 :(得分:1)
在Java中,String是不可变的 - 这意味着您无法更改字符串,因此String.replaceAll之类的方法永远不会更改您调用该方法的String对象。
如documentation中所述,String.trim()和String.replaceAll()都返回一个新的,已更改的字符串。这是你需要使用的字符串,忘记旧的字符串。您的代码应如下所示:
test = test.trim();
test = test.replaceAll("\t", "");
line = line.trim();
line = line.replaceAll("\\t", "");