标签不会从字符串中删除

时间:2017-05-12 10:35:21

标签: java

环境: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变体但没有成功。我做错了吗?

1 个答案:

答案 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", "");