"\\s+"的使用
详解 "\\s+"
正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]
- \f -> 匹配一个换页
- \n -> 匹配一个换行符
- \r -> 匹配一个回车符
- \t -> 匹配一个制表符
- \v -> 匹配一个垂直制表符
而“\s+”则表示匹配任意多个上面的字符。另因为反斜杠在Java里是转义字符,所以在Java里,我们要这么用“\\s+”.
那么问题来了,“\\s+”有啥使用场景呢?
举例——排序
假设一个输入场景:用冒泡排序算法对一组数字进行从小到大排序
输入:输入的是一行数字,就是我们需要排序的数字
输出:输出是从小到大排序好的数字,数字之间用空格分开
样例输入
- 2 1 5 8 21 12
样例输出
- 1 2 5 8 12 21
方法1:
- import java.util.Scanner;
- public class test{
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- String s = sc.nextLine();//将用户输入的一整行字符串赋给s
- String[] c = s.split(" ");//用空格将其分割成字符串数组
- int size = c.length;
- int[] b =new int[size];
- for (int m = 0; m < b.length; m++) {
- b[m] = Integer.parseInt(c[m]);//讲字符串数组转换成int数组
- }
- int temp=0;
- for (int i = 0; i < b.length; i++) {
- for (int j = 0; j < b.length-i-1; j++) {
- if(b[j]>b[j+1]){
- temp=b[j];
- b[j]=b[j+1];
- b[j+1]=temp;
- }
- }
- }
- for(int n = 0; n < b.length ; n++){
- System.out.print(b[n]);
- System.out.print(' ');
- }
- sc.close();
- }
- }
方法2:
- import java.util.Scanner;
- public class test{
- public static void main(String[] args) {
- Scanner sc = new Scanner(System.in);
- String s = sc.nextLine();//将用户输入的一整行字符串赋给s
- String[] c = s.split("\\s+");//用空格将其分割成字符串数组
- int size = c.length;
- int[] b =new int[size];
- for (int m = 0; m < b.length; m++) {
- b[m] = Integer.parseInt(c[m]);//讲字符串数组转换成int数组
- }
- int temp=0;
- for (int i = 0; i < b.length; i++) {
- for (int j = 0; j < b.length-i-1; j++) {
- if(b[j]>b[j+1]){
- temp=b[j];
- b[j]=b[j+1];
- b[j+1]=temp;
- }
- }
- }
- for(int n = 0; n < b.length ; n++){
- System.out.print(b[n]);
- System.out.print(' ');
- }
- sc.close();
- }
- }
这两个方法的区别就是
- 用它:String[] c = s.split(" ");还是用它:String[] c = s.split("\\s+");
假如我们输入的是:1 2 3 12 11这样的数据,换言之就是数字之间有多个空格的时候,方法1将会报错,而方法2正常排序运行。因为方法1只能匹配一个空格,而方法2可以匹配多个空格。
随机推荐
- Extjs下拉多选框
//------录入时间,下拉列表框------ var inputTimeRow = new Ext.data.Record.create([ { name : 'value' },{ name : ...
- NSWindow添加NSViewController
大概这样,笔记一下,防止忘记 - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { MyViewControl ...
- 两个DataTable关联查询(inner join、left join)C#代码
using System; using System.Collections.Generic; using System.Text; using System.Data; namespace Cons ...
- 【Oracle学习笔记-5--】集合操作之union,intersect和minus操作
--union并操作 select e.employee_id,e.last_name from hr.employees e where e.last_name like 'C%' union se ...
- 2018-2019 20165226 Exp5 MSF基础应用
2018-2019 20165226 Exp5 MSF基础应用 目录 一.实验内容说明及基础问题回答 二.实验过程 Task1 主动攻击实践 ms08_067 ms17_010 Task2 针对浏览器 ...
- 关于clearfix和clear的研究
今天领导跟我说到这个问题,我上网找了些资料,已转载一篇文章到本博客(后一篇),摘自百度文库. ps:还有一种写法就是: CSS代码: .clearfix:after { content: " ...
- 计算图像相似度——《Python也可以》之一
声明:本文最初发表于赖勇浩(恋花蝶)的博客http://blog.csdn.net/lanphaday 先将两张图片转化为直方图,图像的相似度计算就转化为直方图的距离计算了,本文依照如下公式进行直方图 ...
- h3c端口汇聚的几种情况-S5500-S5048
S5500和S5048E聚合的几种情况,分享下:1.S5048E用手工的话,S5500用静态方式2.S5048E用静态的话,S5500用动态方式3.S5048E和S5048E聚合的话,用相同方式即可. ...
- CentOS命令行性能检测工具
一.uptime Uptime命令的显示结果包括服务器已经运行了多长时间,有多少登陆用户和对服务器性能的总体评估(load average).load average值分别记录了上个1分钟,5分钟和1 ...
- Oracle中分页查询和联表查询
1.使用ROWNUM伪列查询 1.1.查询十条数据(rownum<=n) SELECT ROWNUM,A.* FROM v_sjjx_unit_info A WHERE ROWNUM<=1 ...