问题

首先我们先假设需要对一个字符串"hello world!"做分割,去除中间的空格,获取每一个单词的字符串数组words。

方法1

我们最简单也是最容易的方法是使用split对字符串进行分割。

方法如下:

String s = "hello world!";
String[] words = s.split(" ");
for(String word:words){System.out.println(word);
}

打印结果如下:

hello
world!

但是这样的方法在面对多个空格时将会获取空的字符串。例如

String s = "hello  world!";
String[] words = s.split(" ");
for(String word:words){System.out.println(word);
}

打印结果如下:

helloworld!

显然这种方式不合我们的预期,接下来我们考虑使用功能更强大一些的正则表达式来达成我们的目标。

方法二

正则表达式\\s+表示匹配任何空白字符一次或多次。我们使用一个更长一点的字符串进行测试:

String str = "hello  world! this  is   right!";
String[] words = str.split("\\s+");
for(String word:words){System.out.println(word);
}

打印结果如下:

hello
world!
this
is
right!

可以看到,目前使用正则表达式进行字符串的切分达到了我们的目的。我们再来考虑一种情况,在这个字符串的开头或者结尾处也同样含有空格的情况。例如:

String str = "  hello  world! this  is   right!  ";
String[] words = str.split("\\s+");
for(String word:words){System.out.println(word);
}
System.out.println("-------this is endLine-------");

打印结果如下:

hello
world!
this
is
right!
-------this is endLine-------

可以看到,开头的空格并没有被正确切分出来,使用正则表达式也没有达到我们的目的。

方法3

其实,从方法2来看,我们已经很接近了,只是开头这空格有些令人恼怒。也许聪明的你已经在想,假如我能在进行分割之前把字符串的开头空格给处理掉,这样再使用split分割不就好了?Java的String方法中确实有这样一个方法能够办到这件事,看来你和Java语言的设计者所见略同。前面提到的方法叫trim,知道这件事后,接下来就好办了。

我们来测试一下:

String str = "   hello  world! this  is   right!   ";
String afterTrim = str.trim();
System.out.println("after trim:"+afterTrim);
String[] words = afterTrim.split("\\s+");
for(String word:words){System.out.println(word);
}
System.out.println("-------this is endLine-------");

打印结果如下:

after trim: hello  world! this  is   right!
hello
world!
this
is
right!
-------this is endLine-------

使用trim,split,正则表达式后,我们完成了对一个字符串去除了空格并提取分隔的单词信息。

获取不含空格字符串

这里简单介绍一下,主要的思路是使用String对象提供的replaceAll方法,这里只给出一种简单实现,更多可以去参考文章中自行参阅。

String str = "   hello  world! this  is   right!   ";
System.out.println(str.replaceAll(" +",""));

打印结果如下:

helloworld!thisisright!

上述方法可以去除字符串中的所有空格,包括开头结尾,并返回一个String。

总结

在对一个简单字符串"hello world!"的切分中,我们首先使用了方法1,简单的使用split进行切分,但这种方式无法处理含多个空格间隔的单词切分;这时我们开始求助于方法二,也就是使用正则表达式进行切分,虽然效果很好,但是在这种方法在面对字符串开头含空格的情况下无法正确切割掉开头的空格;最后,我们使用方法3,也就是用trim先对字符串做预处理,消除开头结尾的空格之后再做切分,这样,我们完美完成了我们的任务。

最后文章稍微提了一下对于获取不含空格的字符串的方法。

  
  

参考文章:

JAVA 一个或多个空格分割字符串

Java中去除字符串中空格的方法

Java中去除String中空格的多种方法相关推荐

  1. java去除前后空格_js去除字符串前后空格的多种方法

    js去除字符串前后空格的五种方法. 第一种:循环检查替换 复制代码 代码示例: //供使用者调用 function trim(s){ return trimRight(trimLeft(s)); } ...

  2. java:去除字符串中空格 、 oracle (+) 、 mysql中数值运算符和函数

    java:去除字符串中空格 http://www.cnblogs.com/LiuChunfu/p/5661810.html oracle:oracle (+) https://zhidao.baidu ...

  3. js中对String去空格

    js中对String去空格 str为要去除空格的字符串: 去除所有空格: str = str.replace(/\s+/g,""); 去除两头空格: str = str.repla ...

  4. 编写一个函数,从一个字符串中去除多余的空格。

    这道题是<C和指针>上面的习题,出自于65页第7题,题目描述为: 编写一个函数,从一个字符串中去除多余的空格.函数的原型应该如下: void   deblank( char  string ...

  5. 在前端页面的js中对string去空格

    想要在前端页面(jsp.html等)的javascript中对string去空格:使用正则表达式 假设str为要去除空格的字符串: <script >去除所有空格: str = str.r ...

  6. Java中的string定义的两种方法和区别

    java中的String定义的两种方法和区别 第一种:new方式 String s1 = new String("hello world"); String s2 = new St ...

  7. PHP 中提示undefined index如何解决(多种方法)

    PHP 中提示undefined index如何解决(多种方法) 参考文章: (1)PHP 中提示undefined index如何解决(多种方法) (2)https://www.cnblogs.co ...

  8. php post undefined index,PHP 中提示undefined index如何解决(多种方法)

    一.相关信息 平时用$_post['']或$_get['']获取表单中参数时会出现Notice: Undefined index: --------: 以及我们经常接收表单POST过来的数据时报Und ...

  9. 去除html重复的元素 js,js数组中去除重复值的几种方法

    在日常开发中,我们可能会遇到将一个数组中里面的重复值去除,那么,我就将我自己所学习到的几种方法分享出来 去除数组重复值方法: 1,利用indexOf()方法去除 思路:创建一个新数组,然后循环要去重的 ...

最新文章

  1. request中的内容存储_宜信开源|调用链系列(3):解读UAVStack中的调用链技术...
  2. js学习总结----crm客户管理系统之项目开发流程和api接口文档
  3. [蓝桥杯][算法提高VIP]质数的后代-质数筛
  4. [html] html5都有哪些新的特性?移除了哪些元素?
  5. LeetCode题——最长无重复子串
  6. C#LeetCode刷题-Map
  7. mkisofs(genisoimage) 命令说明
  8. mac ipmessage
  9. 用 C++ 跟你聊聊“桥接模式” | 原力计划
  10. 游戏开发之使用类封装双链表数据结构及双链表迭代器初版(C++基础)
  11. HTML中播放提示音
  12. 《密码编码学与网络安全》原理与实践笔记(一)
  13. ACPI电源管理模式详解
  14. mysql内连接去重复_MYSQL 内连接查询重复
  15. java计算机毕业设计springboot+vue城市轨道交通线路查询系统-公交车线路查询
  16. numpy一行转为一列
  17. word骨灰级水平,赶紧留一份
  18. 微人事(vhr)开源项目部署
  19. xml 压缩_研究最新的XML压缩技术
  20. 基于eBox旋转编码器

热门文章

  1. dw中连接mysql数据库连接_如何在Dreamweaver中进行数据库连接
  2. ubuntu18.04安装opencv with ffmpeg和java
  3. Niushop 拼团活动
  4. 苹果笔记本php好吗,苹果笔记本性能好吗?苹果电脑性能的评估和建议
  5. XP系统不小心按了什么键屏幕变窄两边有黑色的
  6. Centos7 进入单用户模式
  7. Linux操作系统管理
  8. 构造函数,new实例化对象
  9. PortSwigger Academy | HTTP Host header attacks : HTTP Host头攻击
  10. 征信逾期严重 还能成功下卡吗?