String.trim()はスペースを削除できません
3929 ワード
前言
プロジェクトでバックグラウンドでスペースを処理するときにtrim()メソッドを使用しても効果がありません
解決策
transUserName.replaceAll("\\u00A0",""); 理由:フロントからhtmlエスケープ文字
拡張
ソースコードを次のように表示します.
原文の「white space」は中国語で「白を残す」または「空白を残す」と直訳されていますが、一般的なドキュメントでは「スペース」と訳され、スペースの英語では「blank」または「space」と訳されるので、曖昧になりやすいです.まとめ:trim()メソッドは、実際にはtrimが文字列の両端のUnicode符号化が32(<20)以下のすべての文字を除去し、全角スペース
プロジェクトでバックグラウンドでスペースを処理するときに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)以下のすべての文字を除去し、全角スペース