\\s+ split替换

news/2024/7/5 2:18:50

出自:

http://www.tuicool.com/articles/vy2ymm

 

详解 "\\s+"

正则表达式中\s匹配任何空白字符,包括空格、制表符、换页符等等, 等价于[ \f\n\r\t\v]

  • \f -> 匹配一个换页
  • \n -> 匹配一个换行符
  • \r -> 匹配一个回车符
  • \t -> 匹配一个制表符
  • \v -> 匹配一个垂直制表符

而“\s+”则表示匹配任意多个上面的字符。另因为反斜杠在Java里是转义字符,所以在Java里,我们要这么用“\\s+”.

那么问题来了,“\\s+”有啥使用场景呢?

API测试中,替换测试模板中的数据

在API自动化测试中,我们经常要用xml,或者json文件,来保存API payload。 比如下面这个模板:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<userInvite>
<toEmail>xxxx@gmail.com</toEmail> <toUserId>%s</toUserId> <fromUserId>%s</fromUserId> <groupId>123</groupId> <inviteMetadataId>1</inviteMetadataId> <status>created</status> <clilentId>xxxx</clilentId> <inviteProperties>  <inviteProperty>   <key>key</key>   <value>value</value>  </inviteProperty>  <inviteProperty>   <key>subject</key>   <value>is inviting you</value>  </inviteProperty> </inviteProperties> </userInvite>

而在测试的时候,我们就经常要替换模板中的数据,去测试API的逻辑。比如我要去掉key为subject的inviteProperty, 然后再Call这个API,怎么办呢?

OK,答案很明显,我们只要替换他们就可以了,而这时候\\s+就可以派上用场了。

比如我们可以直接将其替换成空格:

payload.replaceFirst("<inviteProperty>\\s+<key>subject</key>\\s+<value>is inviting you</value>\\s+</inviteProperty>", "");

这里的\\s+可以替换掉关键字之间的所有空白字符。

\\s+在经典算法题:单词反转中的使用

有这么一个经典算法题:

输入一串字符,然后按着单词倒叙输出比如:
输入 "the sky is blue",
输出 "blue is sky the".

这题如果使用String的Split方法就非常方便,我们可以根据空格把字符串分成单词数组,这样就可以倒着输出单词就可以了。

但是如果单纯的使用空格就会有很多缺陷,比如:

s.trim().split(" ");

如果输入为这样就会有问题 “a b”,用上面的代码,我们就会分拆出下面的结果:

最后分解出了四个元素!

很明显跟我们的预期不一样,我们希望是只剩两个单词,所以如果使用\\s+,一切就完美多了!

最后给出完整算法解决方案:

public static String reverseWords(String s)
{
  String[] wordsArray = s.trim().split("\\s+");	
 StringBuilder result = new StringBuilder();   for(int i = wordsArray.length - 1; i >= 0 ; i--)  {  if(i == 0)  {  result.append(wordsArray[i]);  }  else  {   result.append(wordsArray[i] + " ");  }  }   return result.toString(); }

转载于:https://www.cnblogs.com/newcoder/p/5765495.html


http://lihuaxi.xjx100.cn/news/242673.html

相关文章

baidumap api MySQL_百度地图API开发笔记一(基础篇)

什么是百度地图API&#xff1f;百度地图API是一套由JavaScript语言编写的应用程序接口&#xff0c;它能够帮助您在网站中构建功能丰富、交互性强的地图应用。百度地图API包含了构建地图基本功能的各种接口&#xff0c;提供了诸如本地搜索、路线规划等数据服务。测试js API代码(…

mysql 匹配 findinset

SELECT FS_ITEM_DESC FROM dictionary WHERE FS_TYPE prizeType AND FIND_IN_SET(FS_ITEM_CODE,(SELECT AWARDS FROM tb_textbook WHERE TEXTBOOK_ID 1)) FIND_IN_SET &#xff0c;在一串有律字符串中查找关键字&#xff0c;返回匹配成功的行例 &#xff1a; FIND_IN_SET(1,1…

学web前端需要了解哪些常识

想要学好web前端技术&#xff0c;那么一定要掌握足够的知识&#xff0c;web前端技术包含很多方面的知识&#xff0c;具体学web前端需要了解哪些常识?来看看下面的详细介绍。 学web前端需要了解哪些常识? html css javascript。 要学的内容实在很多&#xff0c;如果没有其他编…

如何独立开发一个网络请求框架

&#xff08;原创出处为本博客&#xff1a;http://www.cnblogs.com/linguanh/&#xff09; 目录&#xff1a; 前言 准备工作 开发模式 开发原则 线程 高并发 TCP/UDP 本类介绍 开发选择 功能列表 优点 拓展 完整代码 用法例子 前言&#xff1a; 已开源到GitHub&#xff0c;希望…

获取 metadata 的完整例子 - 每天5分钟玩转 OpenStack(166)

我们将通过实验详细分析 instance 从 nova-api-metadata 获取信息的完整过程。 环境介绍 1. 一个 all-in-one 环境&#xff08;多节点类似&#xff09;。 2. 已创建 neutron 网络 test_net&#xff0c;DHCP 已启动。在这个 metadata 实验中&#xff0c; test_net 的 type 不重要…

mysql innodb_data_file_path_关于innodb_data_file_path设置

关于innodb_data_file_path设置启动Mysql时报错&#xff0c;无法正常启动&#xff0c;通过日志发有数据文件大小错误&#xff0c;日志如下截图&#xff1a;[ERROR] InnoDB: auto-extending data file /usr/local/mysql/data/ibdata1 is of a different size 768 pages (rounded…

学习UI设计需要用到哪些工具

UI设计在近几年受到了很多人的关注&#xff0c;越来越多的人都想要进入到UI设计这个行业&#xff0c;学习UI设计的人越来越多&#xff0c;小编下面就为大家详细的介绍一下学习UI设计需要用到哪些工具?希望能帮助到正在学习UI设计的同学们。 学习UI设计需要用到哪些工具? 一、…

mysql切换系统盘命令_mysql常用命令

一、连接MySQL格式&#xff1a; mysql -h主机地址 -u用户名 &#xff0d;p用户密码1、例1&#xff1a;连接到本机上的MYSQL。首先在打开DOS窗口&#xff0c;然后进入目录 mysqlbin&#xff0c;再键入命令mysql -uroot -p&#xff0c;回车后提示你输密码&#xff0c;如果刚安装好…