使用trim()时,为什么没有删除前导空格?

时间:2012-03-10 13:28:11

标签: java string trim

我需要访问java源文件,我使用String的方法trim()来删除任何前导和尾随空格。但是代码是一些范围,例如:

if(name.equals("joe")){
   System.out.println(name);
}

打印声明的空格未完全删除。有没有办法能够删除这些白色空间?

由于

编辑:我确实使用了一个新变量:

String n = statements.get(i).toString().trim();
            System.out.println(n);

然而输出仍然如下:

System.out.println("NAME:" + m.getName());
BlockStmt bs = m.getBody();
List<Statement> statements = bs.getStmts();
for (int i = 0; i < statements.size(); i++) {
    if ((statements.get(i).toString().trim().contains(needed)) & (statements.get(i).toString().trim().length() == needed.length())) {
        System.out.println("HEREEEEEEEEEEEEEEEEEEEEEEEEEE");
    }
}

某些字符串仍然预先包含空格

3 个答案:

答案 0 :(得分:5)

你错了。 String.trim()方法 完全删除了前导和尾随白色。

但是,我怀疑你真正的问题是你不知道这到底意味着什么。 Java字符串是不可变的,因此trim()显然不会修改目标String对象。相反,它返回一个删除了空格的新String实例。所以你需要按如下方式使用它:

    String trimmed = someString.trim();

答案 1 :(得分:4)

您必须分配字符串的结果。 (字符串objects是不可变的)。

name=name.trim();
if(name.equals("joe")){
   System.out.println(name);
}

答案 2 :(得分:2)

正如@home所说:

if(name.equals("joe")){
        String newName = name.trim();
        System.out.println(newName);
}

应该工作

编辑:我猜你想在条件之前使用trim。我的错误。

String newName = name.trim();

if(newName.equals("joe")){
        System.out.println(newName);
}