【问题标题】:trim.() method does not work(java)trim.() 方法不起作用(java)
【发布时间】:2015-05-14 17:49:40
【问题描述】:

所以我试图在没有空格的情况下计算字符串中的字符。但不知何故,我的 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() 只修剪尾随空格,而不是字符串内的空格。
  • 并不是 .trim() 不起作用;它按预期工作。是你误解了它的作用...... trim() 不像tr

标签: java string trim


【解决方案1】:

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

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

【讨论】:

  • 正则表达式变得烦人且不可能。我更喜欢使用 text.replace(char, char) 除非您需要多个字符,在这种情况下不需要。 replace 仍然替换所有出现,它一次只能做一个字符
  • 天哪,非常感谢。所以是的,这很明显! xD 没有对 trim() 的工作给予足够的重视。
  • @Mrab Whitespace 不仅仅是[ ] 所以......你会错过标签等。
  • 然后对空格、制表符等做同样的事情
【解决方案2】:

你误会了trim()

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

改用replace() 删除所有空格

text.replace(" ","");

【讨论】:

    【解决方案3】:

    trim() 方法只删除字符串开头和结尾的空格。不过,测试字符串中的空格位于中间的某个位置。

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

    【讨论】:

      【解决方案4】:

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

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

      改为使用 .replace

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

      【讨论】:

        【解决方案5】:

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

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-04-22
          • 1970-01-01
          • 1970-01-01
          • 2012-09-02
          • 2016-02-09
          • 2016-04-15
          • 2011-03-30
          相关资源
          最近更新 更多