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

trim.() method does not work(java)

所以我正在尝试计算不带空格的字符串中的字符数。但是不知何故,我的 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

我哪里错了。非常感谢! (我还没有那么有经验,如果有明显错误,请见谅)

Trim 不会删除所有空格,只会删除前导和尾随。要删除所有空格,您需要这样的东西:

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

你误会了trim()

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

改用replace()删除所有空格

text.replace(" ","");

Trim 不会那样做。 Trim 会做这样的事情

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

而是使用 .replace

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

trim()方法只从字符串的开头和结尾删除spaces。不过,测试字符串中的 space 位于中间某处。

也许比修剪更好的选择是单独检查白色space 字符。 Character class 为此目的提供了静态 isWhitespace(char) 方法。

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

所以,这里也不会省略Tessstttt和fail之间的space

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