所以我试图在没有空格的情况下计算字符串中的字符。但不知怎的,我的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
我的错误在哪里。非常感谢!! (我不是那么有经验,如果有明显错误就很抱歉)
答案 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(" ", "");