修剪。()方法不起作用(java)
所以我试图在没有空格的情况下计算字符串中的字符。但不知怎的,我的trim()方法并没有减少空格:修剪。()方法不起作用(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++) {
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"