java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > String.trim()消除不了空格

String.trim()消除不了空格的问题及解决

作者:周英雄

这篇文章主要介绍了String.trim()消除不了空格的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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。

String.trim()方法说明

API说明

trim

public String trim()返回字符串的副本,忽略前导空白和尾部空白。 

如果此 String 对象表示一个空字符序列,或者此 String 对象表示的字符序列的第一个和最后一个字符的代码都大于 '\u0020'(空格字符),则返回对此 String 对象的引用。 

否则,若字符串中没有代码大于 '\u0020' 的字符,则创建并返回一个表示空字符串的新 String 对象。 

否则,假定 k 为字符串中代码大于 '\u0020' 的第一个字符的索引,m 为字符串中代码大于 '\u0020' 的最后一个字符的索引。创建一个新的 String 对象,它表示此字符串中从索引 k 处的字符开始,到索引 m 处的字符结束的子字符串,即 this.substring(k, m+1) 的结果。 

此方法可用于截去字符串开头和末尾的空白(如上所述)。 

返回:

此字符串移除了前导和尾部空白的副本;如果没有前导和尾部空白,则返回此字符串。

示例代码

 
    /**  
     * @Title: TrimTest.java
     * @Package com.burns
     * @Description: TODO(用一句话描述该文件做什么)
     * @author 35725
     * @date 2019年11月29日 上午11:45:17 
     * @version V1.0  
     */
package com.burns;
    /**
     * @ClassName: TrimTest
     * @Description: TODO(这里用一句话描述这个类的作用)
     * @author 35725
     * @date 2019年11月29日
     *
     */
public class TrimTest {
	public static void main(String[] args) {
		String s= " 1 1 2  3   ";
		System.out.println("trim方法执行之后>>>>"+s.trim()+"<<<<");
		System.out.println("源字符串:>>>>"+s+"<<<<<<");
	}
}

执行结果

trim方法执行之后>>>>1 1 2  3<<<<
源字符串:>>>> 1 1 2  3   <<<<<<

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文