trim。()方法不起作用(java)

时间:2015-05-14 17:49:40

标签: java string trim

所以我试图在没有空格的情况下计算字符串中的字符。但不知怎的,我的trim()方法没有削减空格:

class Test {

HashMap<Character, Integer> testMap = new HashMap<>();

public void encode(String text) {
    String code = text.trim();
    for (int i = 0; i < code.length(); i++) {
        Character key = code.charAt(i);
        if (testMap.containsKey(key)) {
            testMap.put(key, testMap.get(key) + 1);
        } else {
            testMap.put(key, 1);
        }

    }
    System.out.println(testMap);
    System.out.println(code);
}

主要方法:

public class MyMain {

public static void main(String[] args) {
    Test test = new Test();
    test.encode("Tessstttt faill");

}

}

所以输出是:

{ =1, a=1, s=3, T=1, t=4, e=1, f=1, i=1, l=2}
Tessstttt faill

我的错误在哪里。非常感谢!! (我不是那么有经验,如果有明显错误就很抱歉)

5 个答案:

答案 0 :(得分:13)

修剪不会删除所有空格,只删除前导和尾随空格。要删除所有空格,您需要这样的内容:

text.replaceAll("\\s","")

答案 1 :(得分:1)

trim()方法仅从字符串的开头和结尾删除空格。但是,测试字符串中的空间位于中间位置。

也许比修剪更好的选择是对空白字符进行单独检查。 Character类为此提供了静态isWhitespace(char)方法。

答案 2 :(得分:0)

你误解了trim()

Returns a copy of the string, with leading and trailing whitespace omitted.

使用replace()代替删除所有空格

text.replace(" ","");

答案 3 :(得分:0)

修剪不会那样做。修剪会做这样的事情

" hello world ".trim() > "hello world"

相反,请使用.replace

" hello world ".replace(' ', '') > "helloworld"

答案 4 :(得分:0)

实际上java中的trim()方法只省略了前导空白空格,而不是字符串之间。 作为http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#trim()

所以,这里也不会省略Tessstttt和失败之间的空间。

您可以使用replace()删除此空格,例如code = code.replace(" ", "");