修剪。()方法不起作用(java)

修剪。()方法不起作用(java),java,string,trim,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++) {

所以我试图在没有空格的情况下计算字符串中的字符。但不知怎的,我的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);
}
}

因此,输出为:

{ =1, a=1, s=3, T=1, t=4, e=1, f=1, i=1, l=2}
Tessstttt faill
我的错误在哪里。非常感谢!!
(我还没有那么丰富的经验,如果出现明显的错误,非常抱歉)

Trim不会删除所有空白,只删除前导和尾随。要删除所有空白,您需要以下内容:

text.replaceAll("\\s","")
你误解了

改用
replace()
删除所有空格

text.replace(" ","");

Trim不能做到这一点。Trim会做这样的事情

" hello world ".trim() > "hello world"
相反,使用。替换

" hello world ".replace(' ', '') > "helloworld"
trim()
方法仅删除字符串开头和结尾的空格。测试字符串中的空间在中间,但

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

实际上java中的trim()方法只省略了尾随空格,而不是字符串之间的空格。 作为

所以,这里也不会忽略TESSTTT和fail之间的空格


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

.trim()只修剪尾随空格,而不是字符串中的空格。这并不是说.trim()不起作用;它按预期工作。是你误解了它的作用。。。trim()不像
tr
regex那样烦人和不可能。我更喜欢使用text.replace(char,char),除非您需要多个字符,在这种情况下不需要多个字符。替换仍然替换所有事件,它一次只能执行一个字符哦,天哪,非常感谢。是的,这是显而易见的!xD对trim()的工作没有给予足够的重视。@Mrab空白不仅仅是
[]
所以。。。。你可能会错过制表符等,然后对空格、制表符等做同样的事情。这甚至不重要,只是坏了
" hello world ".trim() > "hello world"
" hello world ".replace(' ', '') > "helloworld"