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 语言中的泛型是一种强大的特性,它可以将类型参数化,使得代码更具通用性和安全性,本文将深入讲解 Java 通配符和泛型,有需要的小伙伴可以了解下
    2023-12-12
  • Spring Boot实现文件上传示例代码

    Spring Boot实现文件上传示例代码

    本篇文章主要介绍了Spring Boot实现文件上传示例代码,可以实现单文件和多文件的上传,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
    2017-03-03
  • Java并发编程之线程安全性

    Java并发编程之线程安全性

    这篇文章主要介绍了Java并发编程之线程安全性,文章基于Java的相关内容详细的展开详细介绍,需要的小伙伴可以参考一下
    2022-04-04
  • 详解springboot项目启动时如何排除用不到的bean

    详解springboot项目启动时如何排除用不到的bean

    使用springboot开发项目,我们有时候会排除一些项目里面用不到的bean,不然的话项目启动会报错,这种情况通常是发生在什么场景里呢,以及如何解决呢,今天咱们就聊一聊
    2024-01-01
  • Maven打包跳过测试的三种方法

    Maven打包跳过测试的三种方法

    这篇文章主要介绍了Maven打包跳过测试的三种方法,帮助大家更好的理解和使用maven,感兴趣的朋友可以了解下
    2020-11-11
  • idea运行java项目main方法报build failure错误的解决方法

    idea运行java项目main方法报build failure错误的解决方法

    当在使用 IntelliJ IDEA 运行 Java 项目的 main 方法时遇到 "Build Failure" 错误,这通常意味着在项目的构建过程中遇到了问题,以下是一些详细的解决步骤,以及一个简单的代码示例,用于展示如何确保 Java 程序可以成功构建和运行,需要的朋友可以参考下
    2024-09-09
  • 详解Java内部类与对象的打印概念和流程

    详解Java内部类与对象的打印概念和流程

    在 Java 中,可以将一个类定义在另一个类里面或者一个方法里面,这样的类称为内部类。广泛意义上的内部类一般来说包括这四种:成员内部类、局部内部类、匿名内部类和静态内部类
    2021-10-10
  • Java实现简单的飞机大战游戏(控制主飞机篇)

    Java实现简单的飞机大战游戏(控制主飞机篇)

    这篇文章主要为大家详细介绍了Java实现简单的飞机大战游戏,控制主飞机,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 浅谈Spring bean 生命周期验证

    浅谈Spring bean 生命周期验证

    本篇文章主要介绍了浅谈Spring bean 生命周期验证,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • 详解Spring Boot实战之Restful API的构建

    详解Spring Boot实战之Restful API的构建

    这篇文章主要介绍了详解Spring Boot实战之Restful API的构建,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-01-01

最新评论