"\\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可以匹配多个空格。
随机推荐
- R(5): sql 数据处理
sqldf程序包是R语言中实用的数据管理辅助工具,但最新版本的包在处理中文时出现乱码,待解决 Usage: sqldf(x, stringsAsFactors = FALSE, row.names ...
- 导出pb模型之后测试的python代码
链接:https://blog.csdn.net/thriving_fcl/article/details/75213361 saved_model模块主要用于TensorFlow Serving.T ...
- Django url反向解析与路由分发名称空间
url反向解析 url.py from django.conf.urls import url from django.contrib import admin from app01 import v ...
- -Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容
ylbtech-Java-Runoob-高级教程-实例-数组:09. Java 实例 – 数组扩容 1.返回顶部 1. Java 实例 - 数组扩容 Java 实例 以下实例演示了如何在数组初始化后 ...
- RabbitMQ 主题
RabbitMQ (三) 发布/订阅 RabbitMQ主题 RabbitMQ Tutorials
- java-appium-527手机浏览器、PC端程序、grid模式
1.手机浏览器 2.window通用成语自动化 3.appium支持grid模式
- 关于clearfix和clear的研究
今天领导跟我说到这个问题,我上网找了些资料,已转载一篇文章到本博客(后一篇),摘自百度文库. ps:还有一种写法就是: CSS代码: .clearfix:after { content: " ...
- 共享存储(ISCSI网络存储)
server端:(192.168.100.11) 分区sdb 分别为10G和5G #fdisk /dev/dab …… 同步分区表 #partprobe /dev/sdb # yum install ...
- centos 7.5 安装mongodb
MongoDB安装和启动 从官网下载最新对应的版本然后解压,本文以3.6.9为例,将文件拷贝到opt目录下,然后解压: [root@localhost opt]# tar zxvf mongodb-l ...
- 捷通华声TTS在Aster+中的安装过程
1)挂载TTS光碟 2)安装如下5个rpm软件包 [asterisk@TTS78:/mnt]$ls *.rpmjTTS-5.0.1.0-3.i386.rpm VocLib_Xi ...