关于String字符串空格的处理[用(char)12288解决空格问题]
我们经常会遇到要处理字符串的情况,而很多的时候是对于其中的空格处理尤其是文章段落的开始,这时候会经常遇到没法去除空格的情况,这时候需要冷静判断当前的空格是什么。因为这个问题坑过很多次了,特地记录,希望可以帮到你。
解决过程如下所示:
1.获取字符串中空格所在位置的ascii
2.用箭头的方式去除
3.失败的尝试
接下来是网上的一些资料也可以参考。点击打开链接
Strim或者Trip都是只能去除头部和尾部的空字符串。中间的部分是不能够去除的!
推荐使用ApacheCommonse的StringUtils.deleteWhitespace("a b c"); 删除所有空格经验证有效。
下载地址点击打开链接
或者gradle 导入
compile 'org.apache.commons:commons-lang3:3.6'
Maven导入
<dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.6</version> </dependency>
如果我自己写,我会采用foreache遍历每一个字符串中的字符然后利用StringBuilder追加 或者使用 Replace进行替换,替换的时候对于多个空格可能匹配有问题,利用正则表达式?
1. String.trim()
trim()是去掉首尾空格
2.str.replace(" ", ""); 去掉所有空格,包括首尾、中间
String str = " hell o ";
String str2 = str.replaceAll(" ", "");
System.out.println(str2);
3.或者replaceAll(" +",""); 去掉所有空格
4.str = .replaceAll("\\s*", "");
可以替换大部分空白字符, 不限于空格
\s 可以匹配空格、制表符、换页符等空白字符的其中任意一个
5.或者下面的代码也可以去掉所有空格,包括首尾、中间
public static String remove(String resource, char ch) { StringBuffer buffer = new StringBuffer(); int position = 0; char currentChar; while (position < resource.length()) { currentChar = resource.charAt(position++); if (currentChar != ch) buffer.append(currentChar); } return buffer.toString(); }
public static String removeBlank(String testString) { testString = testString.trim(); //中文空格从上文复制 testString = testString.replaceAll(" ", ""); //中文空格自己打 发现无效 testString = testString.replaceAll(" ", ""); //制表符 testString = testString.replaceAll(" ", ""); //英文空格 testString = testString.replaceAll(" ", ""); //可以替换大部分空白字符, 不限于空格 \s 可以匹配空格、制表符、换页符等空白字符的其中任意一个 testString = testString.replaceAll("\\s*", ""); return testString; }