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

 更新时间:2023年07月17日 09:06:16   作者:周英雄  
这篇文章主要介绍了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   <<<<<<

总结

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

相关文章

  • java数据结构基础:单链表与双向链表

    java数据结构基础:单链表与双向链表

    这篇文章主要为大家详细介绍了java实现单链表、双向链表的相关资料,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • SpringBoot项目中新增脱敏功能的实例代码

    SpringBoot项目中新增脱敏功能的实例代码

    项目中,由于使用端有两个,对于两个端的数据权限并不一样。Web端可以查看所有数据,小程序端只能查看脱敏后的数据,这篇文章主要介绍了SpringBoot项目中新增脱敏功能,需要的朋友可以参考下
    2022-11-11
  • Java日常练习题,每天进步一点点(17)

    Java日常练习题,每天进步一点点(17)

    下面小编就为大家带来一篇Java基础的几道练习题(分享)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧,希望可以帮到你
    2021-07-07
  • java实现多人聊天室可视化

    java实现多人聊天室可视化

    这篇文章主要为大家详细介绍了java实现多人聊天室可视化,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • 详解SpringBoot中使用JPA作为数据持久化框架

    详解SpringBoot中使用JPA作为数据持久化框架

    这篇文章主要介绍了SpringBoot中使用JPA作为数据持久化框架的相关知识,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • 详解Java数据结构之平衡二叉树

    详解Java数据结构之平衡二叉树

    平衡二叉树(Balanced Binary Tree)又被称为AVL树(有别于AVL算法),且具有以下性质:它是一 棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。本文将详解介绍一下平衡二叉树的原理与实现,需要的可以参考一下
    2022-02-02
  • Java负载均衡服务器实现上传文件同步

    Java负载均衡服务器实现上传文件同步

    这篇文章主要介绍了Java负载均衡服务器实现上传文件同步,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • 浅谈java泛型的作用及其基本概念

    浅谈java泛型的作用及其基本概念

    下面小编就为大家带来一篇浅谈java泛型的作用及其基本概念。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-08-08
  • Java实现猜数字小游戏详解流程

    Java实现猜数字小游戏详解流程

    猜数字是兴起于英国的益智类小游戏,起源于20世纪中期,一般由两个人或多人玩,也可以由一个人和电脑玩。游戏规则为一方出数字,一方猜,今天我们来用Java把这个小游戏写出来练练手
    2021-10-10
  • SpringBoot使用Kaptcha实现验证码的生成与验证功能

    SpringBoot使用Kaptcha实现验证码的生成与验证功能

    这篇文章主要介绍了SpringBoot使用Kaptcha实现验证码的生成与验证功能,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03

最新评论