String.trim()消除不了空格

前言

项目中在后台处理空格的时候使用trim()方法没起效果

解决方法

transUserName.replaceAll("\\u00A0","");
原因:前台传过来的是用html转义字符 生成的全角空格,而trim()方法只能消除半角的空格。

扩展

查看源码如下

  /**
   * @return A string whose value is this string, with any leading and trailing white
   *     space removed, or this string if it has no leading or
   *     trailing white space.
   */
  public String trim() {
     
    int len = value.length;
    int st = 0;
    char[] val = value;  /* avoid getfield opcode */

    while ((st < len) && (val[st] <= ' ')) {
     
      st++;
    }
    while ((st < len) && (val[len - 1] <= ' ')) {
     
      len--;
    }
    return ((st > 0) || (len < value.length)) ? substring(st, len) : this;
  }

原文的”white space“中文直译为”留白“或”空白“,但是常见文档一般翻译为”空格“,而空格的英文一般应译为”blank”或”space”,所以这块容易引起歧义。
总结:trim()方法实际上trim掉了字符串两端Unicode编码小于等于32(\u0020)的所有字符,而全角空格\u00A0的Unicode编码为12288。

你可能感兴趣的:(java,javascript)