文
章
目
录
章
目
录
学习如何在Java中Java中将字符串间多个空格替换为单个空格,即从字符串中删除单词之间的额外空白字符。给出3个示例,使用正则表达式、StringBuffer和Apache Commons StringUtils类来将多个空格替换为单个空格。
1.使用Apache Commons StringUtils
这种方法使用StringUtils.normalizeSpace()
是可读性最好的,应该是删除单词之间不需要的空白字符的首选方式。
此函数以两个步骤规范化带有空格的参数字符串,即 –
- 使用trim(String)来删除前导和尾随空格
- 然后 用单个空格替换空格字符序列
1.1. Maven依赖
从Maven仓库添加commons-lang3的最新版本。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.12.0</version>
</dependency>
1.2. 用于移除额外空格的Java程序
//单词之间不均匀的空格
String blogName = "welcome to pan zi ye . com";
String nameWithProperSpacing = StringUtils.normalizeSpace( blogName );
System.out.println( nameWithProperSpacing );
程序输出:
welcome to pan zi ye . com
2.使用正则表达式
使用正则表达式,将2个或更多的空格和不可见字符替换为一个空格也是一个不错的解决方案。
我们使用的正则表达式模式是 "\s+"
。
\s
匹配空格、制表符、换行符、回车符、换页符或垂直制表符。+
表示一个或多个匹配。
请注意,此方法不会修剪字符串。这意味着如果原始字符串在开头或结尾有这样的空格,那么在字符串的开头或结尾可能会有一个单独的空格。
// 单词之间不均匀的空格
String blogName = "welcome to pan zi ye . com";
String nameWithProperSpacing = blogName.replaceAll("\\s+", " ");
System.out.println( nameWithProperSpacing );
程序输出:
welcome to pan zi ye . com
3.使用StringBuffer
StringBuffer也可以帮助我们消除不均匀间隔的字符串。这是一种完全程序化的方法,可能不适用于大字符串。
请注意,类似于正则表达式示例,这种方法也可能会留下前导和尾随的空格。因此,在删除参数字符串中单词之间的额外空格后,请不要忘记调用trim()修剪字符串以去掉头尾空格。
// 单词之间不均匀的空格
String blogName = "welcome to pan zi ye . com";
StringTokenizer st = new StringTokenizer(blogName, " ");
StringBuffer sb = new StringBuffer();
while(st.hasMoreElements())
{
sb.append(st.nextElement()).append(" ");
}
String nameWithProperSpacing = sb.toString();
System.out.println( nameWithProperSpacing );
//去掉字符串的首尾空格
nameWithProperSpacing = nameWithProperSpacing.trim();
System.out.println( nameWithProperSpacing );
程序输出:
welcome to pan zi ye . com