详解 "\\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可以匹配多个空格。

随机推荐

  1. python列表中的pop

    pop()将列表指定位置的元素移除,同时可以将移除的元素赋值给某个变量,不填写位置参数则默认删除最后一位. pop()根据键将字典中指定的键值对删除,同时可以将删除的值赋值给变量. a = [1, 2 ...

  2. protobuf 协议 windows 下 java 环境搭建

    使用maven编译protobuf所需要的jar包 1. 安装配置maven (1)下载maven        http://maven.apache.org/    版本:apache-maven ...

  3. java 使用POI读写Excel文件(兼容2003、2007)

    package com.jadyer.demo; import java.io.File; import java.io.FileOutputStream; import java.io.IOExce ...

  4. antd在线换肤定制功能

    最近react项目,用的antd框架,然后看见他的antdPro例子里面有个定制功能很帅,老大说做,那就做吧,鼓捣了一晚终于实现了. 先看预览效果吧 css换肤 入行前端的时候经常看鱼哥(张鑫旭)的博 ...

  5. DOM节点的增删改查

    在开始展开DOM操作前,首先需要构建一棵DOM树. <!DOCTYPE html> <html lang="en"> <head> <me ...

  6. Spring IOC - 控制反转(依赖注入) - 单例和多例

    Spring容器管理的bean在默认情况下是单例的,即一个bean只会创建一个对象,存在map中,之后无论获取多少次该bean,都返回同一个对象. Spring默认采用单例方式,减少了对象的创建,从而 ...

  7. 学习笔记之Docker

    Docker 官网 http://www.docker.com Docker is the company driving the container movement and the only co ...

  8. WAP网站WML或HTML页面自适应手机屏幕实现方法

     把图片和div的宽度都设置成:width:100%就可以了

  9. [UE4]场景光照改进PostProcessVolume

    PostProcessVolume可以做的效果很多,其中就可以实现太阳光斑效果. Unbound勾上上,就表示不受“PostProcessVolume”组件的大小限制,直接应用到整个世界.如果不勾选, ...

  10. 关于博主noble_

    大家好啊,我是博主noble_,大家叫我noble就行了.我身处上海某初高中连体的市重点,校内OI比较弱. 个人常用OJ是洛谷,BZOJ,POJ,HDU,UVA.名字都叫noble_. 目前noble ...