Java中split的用法及一个金典入坑题目
split() 方法根据匹配给定的正则表达式来拆分字符串。
注意: . 、 $、 | 和 * 等转义字符,必须得加 \\。
注意:多个分隔符,可以用 | 作为连字符。
语法
public String[] split(String regex, int limit)
参数
regex -- 正则表达式分隔符。
limit -- 分割的份数。
返回值
字符串数组。
例子:
public class Test {
public static void main(String args[]) {
String str = new String("Welcome-to-Runoob");
System.out.println("- 分隔符返回值 :" );
for (String retval: str.split("-")){
System.out.println(retval);
}
System.out.println("");
System.out.println("- 分隔符设置分割份数返回值 :" );
for (String retval: str.split("-", 2)){
System.out.println(retval);
}
System.out.println("");
String str2 = new String("www.runoob.com");
System.out.println("转义字符返回值 :" );
for (String retval: str2.split("\\.", 3)){
System.out.println(retval);
}
System.out.println("");
String str3 = new String("acount=? and uu =? or n=?");
System.out.println("多个分隔符返回值 :" );
for (String retval: str3.split("and|or")){
System.out.println(retval);
}
}
}
输出结果:
- 分隔符返回值 :
Welcome
to
Runoob - 分隔符设置分割份数返回值 :
Welcome
to-Runoob 转义字符返回值 :
www
runoob
com 多个分隔符返回值 :
acount=?
uu =?
n=?
入坑例题
LeetCode 151. 翻转字符串里的单词
给你一个字符串 s ,逐个翻转字符串中的所有 单词 。
单词 是由非空格字符组成的字符串。s 中使用至少一个空格将字符串中的 单词 分隔开。
请你返回一个翻转 s 中单词顺序并用单个空格相连的字符串。
说明:
输入字符串 s 可以在前面、后面或者单词间包含多余的空格。
翻转后单词间应当仅用一个空格分隔。
翻转后的字符串中不应包含额外的空格。
示例 1:
输入:s = "the sky is blue"
输出:"blue is sky the"
入坑:部分成功代码:
public String reverseWords(String s) {
if (s.length() == 0) {
return "";
}
String[] arr = s.split(" ");
StringBuffer bf = new StringBuffer();
for (int i = arr.length - 1; i >= 0; i--) {
bf.append(arr[i]);
bf.append(" ");
}
return bf.toString().trim();
}
分析:上述代码使用按空格分割将字符串s分成字符形数组arr,然后再倒序遍历arr,并将遍历的结果存在bf中,最后将bf转成字符串,然后去除头尾的空格,得到结果,但是,
当使用:String[] arr = s.split(" ");时,对于下面这种情形则会出问题:
s = " Bob Loves Alice ";
根本原因就是当按照空格划分,出现几个连续的空格时,结果可能并不是我们想要的,看下面的代码或许你就明白了
public static void main(String[] args) {
String s1="zhang san li si wang";
String[]a1=s1.split(" ");
String[]a2=s1.split("\\s+");
System.out.println(Arrays.toString(a1)+" --- a1.len: "+a1.length);
System.out.println(Arrays.toString(a2)+" --- a2.len: "+a2.length);
}
思考一下,a1和a2这两个数组是一样长的吗?
看结果:
[zhang, san, , li, , , si, , , , wang] --- a1.len: 11
[zhang, san, li, si, wang] --- a2.len: 5 Process finished with exit code 0
其实我们希望a1的结果是a2那样,但是其实并不是,实际上a1的长度是11
因此对于按空格划分字符串时,使用“\\s+”或许效果更好(表示至少匹配1个或多个空格)
// 为什么是\\s,因为java中\表示是转义字符,例如想输出括号需要输出 \( 而不是( 因此java中用\\s
Java中split的用法及一个金典入坑题目的更多相关文章
- Java中split的用法
Java中的我们可以利用split把字符串按照指定的分割符进行分割,然后返回字符串数组,下面是string.split的用法实例及注意事项:java.lang.string.splitsplit 方法 ...
- java中split的用法即回顾
package com.b; public class Cor { public static void main(String[] args) { String a = "this is ...
- java成神之——java中string的用法
java中String的用法 String基本用法 String分割 String拼接 String截取 String换行符和format格式化 String反转字符串和去除空白字符 String获取 ...
- java中this的用法?
2008-07-28 08:10cztx5479 | 分类:JAVA相关 | 浏览4533次 java中this的用法? import java.awt.*; import java.awt.even ...
- 转:十八、java中this的用法
http://blog.csdn.net/liujun13579/article/details/7732443 我知道很多朋友都和我一样:在JAVA程序中似乎经常见到“this”,自己也偶尔用到它, ...
- Java 中 synchronized的用法详解(四种用法)
Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码.本文给大家介绍java中 synchronized的用法,对本文感兴趣的朋友一起看看吧 ...
- Java中关键字final用法
///首先声明,本文转载自博客园的海子,链接:http://www.cnblogs.com/dolphin0520/p/3736238.html 浅析Java中的final关键字 谈到final关键字 ...
- java中stringBuilder的用法
java中stringBuilder的用法 String对象是不可改变的.每次使用 System.String类中的方法之一时,都要在内存中创建一个新的字符串对象,这就需要为该新对象分配新的空间.在需 ...
- 第一篇 网站基础知识 第4章 Java中Socket的用法
第4章 Java中Socket的用法 4.1 普通Socket的用法 Java中的网络通信是通过Socket实现的,Socket分为ServetSocket和Socket两大类,ServetSocke ...
- Java中的Socket用法
转发链接:https://www.cnblogs.com/zhanglei93/p/6217384.html (1)Java中的Socket用法 Java中的Socket分为普通的Socket和Nio ...
随机推荐
- js根据输入字符长度自动调整textarea高度
1.编写html <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...
- 小红书 x Hugging Face 邀请你一起晒「创意新春照」
不藏了,近期全网爆火的AI 写真项目 InstantID,正是来自小红书社区技术创作发布团队. 为了迎接龙年春节的到来,我们的InstantID全新推出「Spring Festival」新春风格!并与 ...
- time模块,os操作系统及os模块和shutil模块用法---day16
1.时间模块 import time time.time() 获取本地时间戳 localtime() 获取本地时间元组,参数是时间戳,默认不写是当前 ***** mktime() 通过时间元组获取时间 ...
- 【LeetCode栈与队列#05】滑动窗口最大值
滑动窗口最大值 力扣题目链接(opens new window) 给定一个数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧.你只可以看到在滑动窗口内的 k 个数字.滑动窗口 ...
- 如何在矩池云使用 Poetry 管理项目环境
官网介绍:Poetry is a tool for dependency management and packaging in Python. It allows you to declare th ...
- SpringCloud使用Kafka消费者
目录 POM文件配置 创建kafka配置 系统配置信息 启动入口 POM文件配置 <project xmlns="http://maven.apache.org/POM/4.0.0&q ...
- 【Azure 事件中心】Kafka 生产者发送消息失败,根据失败消息询问机器人得到的分析步骤
问题描述 Azure Event Hubs -- Kafka 生产者发送消息存在延迟接收和丢失问题, 在客户端的日志中发现如下异常: 2023-06-05 02:00:20.467 [kafka-pr ...
- 【Azure 云服务】Azure Cloud Service 关于虚拟机资源,杀毒软件配置,补丁机制的问答
一:云服务后端是2台虚拟机,Work Role,Web Role,可以RDP进去,但是为什么在虚拟机列表里看不到呢? 因为云服务(经典)是PaaS服务,有别于传统的IaaS服务,其提供的WebRole ...
- hbase报错ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException: Server is not running yet 采坑记
1.错误异常信息: Exception in thread "main" java.lang.IllegalArgumentException: Failed to find me ...
- AI大模型加速RPAxAI时代到来,谁会是RPA领域的杀手级应用?
GPT等AI大模型震撼来袭,基于RPA的超级自动化仍是最佳落地载体 对话弘玑CPO贾岿,深入了解国产RPA厂商对AI大模型的探索与实践 文/王吉伟 关于RPA已死的说法,在中国RPA元年(2019年) ...