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 ...
随机推荐
- C++ 时间复杂度
看到网上一些资料的案例不全,所以自己开个来复习. O(1)<O(log2n)<O(n)<O(nlog2n)<O(n^2)<O(n^3)<-<O(2^n)< ...
- 【Android 逆向】【ARM汇编】 函数的栈帧
1. 函数的调用约定 ARM32 参数1-4 放入r0-r3 剩下的入栈,函数返回值放入r0 ARM64 参数1-8 放入X0-X7 剩下的入栈,函数返回值放入X0 (浮点数是放入 Dn 或 Sn) ...
- Python嵌套绘图并为条形图添加自定义标注
论文绘图时经常需要多图嵌套,正好最近绘图用到了,记录一下使用Python实现多图嵌套的过程. 首先,实现 Seaborn 分别绘制折线图和柱状图. '''绘制折线图''' import seaborn ...
- 【八股cover#1】MySQL Q&A与知识点
MySQL Q&A与知识点 1.基础知识 什么是主键? 它用来唯一标识一条记录(一个字段).每个表都必须有且只能有一个主键,主键的取值不允许为空,而且在表中必须是唯一的(当然还可以有复合主键) ...
- 用Docker发布网站时,自动下载Directory.Build.props及其Import的文件
为Blazor网站项目,"添加Docker支持" 这时,网站项目根目录下会新增Dockerfile. 里面文字内容如下 #See https://aka.ms/customizec ...
- nodejs内存泄漏概要分析
const heapdump = require('heapdump'); setTimeout( ()=>{ heapdump.writeSnapshot(`${process.cwd()}/ ...
- Java 韩顺平老师的课,记的(前6章)笔记
https://www.bilibili.com/video/BV1fh411y7R8/?p=110&spm_id_from=333.880.my_history.page.click& ...
- 3.1蓝桥杯每日知识点,全排列permutation
next_permutation()函数 适用于生成当前序列的下一个排列 如果存在下一个排列,则将当前序列更改为下一个排列,并返回true 如果当前序列已经是最后一个排列,则将序列更改为第一个排列,并 ...
- Volatile关键字原理
转载请标明:https://www.cnblogs.com/tangZH/p/15113505.html 一.如果一个变量被volatile关键字修饰,那么所有线程都是可见的.所谓可见就是,当一条线程 ...
- 视觉slam十四讲CH4 ---李群与李代数求导
视觉slam十四讲 ---CH4 李群与李代数求导 李群与李代数相较于CH3是比较的抽象的数学知识,这个工具的提出目的是解决一些旋转位姿描述的优化问题.本讲最终的目的是解决如何描述对旋转求导的问题. ...