String.trim()はスペースを削除できません

3929 ワード

前言
プロジェクトでバックグラウンドでスペースを処理するときに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(<20)以下のすべての文字を除去し、全角スペース