Java split 分割字符串避坑
使用split进行字符串分割时需要注意2点
1、特殊字符作为分隔符时需要使用\\进行转义(如\\ -> \\\\; | -> \\| )
特殊字符
.$|()[{^?*+\\
例如对"|"分隔
未转义
String str = "01|02|03";
String[] strArr = str.split("|");
System.out.println(strArr.length); //输出8
for (int i = 0; i < strArr.length; ++i) {
System.out.println(strArr[i]);//输出0 1 | 0 2 | 0 3
}
转义
String str = "01|02|03";
String[] strArr = str.split("\\|");
System.out.println(strArr.length); //输出3
for (int i = 0; i < strArr.length; ++i) {
System.out.println(strArr[i]);//输出01 02 03
}
或者
String str = "01|02|03";
String[] strArr = str.split("[|]");
System.out.println(strArr.length); //输出3
for (int i = 0; i < strArr.length; ++i) {
System.out.println(strArr[i]);//输出01 02 03
}
或者
String str = "01|02|03";
// 以|为分隔符来分隔字符串
StringTokenizer st=new StringTokenizer(str,"|");
while(st.hasMoreTokens()) {
System.out.println(st.nextToken());//输出01 02 03
}
2.注意对最后空字符的处理(通常有些情况在最后数据为空的时候只保留了个分隔符,如果不做处理的话,数据分割后的个数和预期不一样)
String str = "01|02|03|"; //注意在最后多了一个|分隔符
String[] strArr = str.split("\\|");
System.out.println(strArr.length); //输出3
for (int i = 0; i < strArr.length; ++i) {
System.out.println(strArr[i]);//输出01 02 03
}
如果需要保留最后一个空字符的数据,则需要将split的第二个参数设置为-1
String str = "01|02|03|"; //注意在最后多了一个|分隔符
String[] strArr = str.split("\\|",-1);
System.out.println(strArr.length); //输出4
for (int i = 0; i < strArr.length; ++i) {
System.out.println(strArr[i]);//输出01 02 03 空字符
}
split源码截图

Java split 分割字符串避坑的更多相关文章
- java关于split分割字符串,空的字符串不能得到的问题
java关于split分割字符串,空的字符串不能得到的问题 class T { public static void main(String args[]) { String num[] = ne ...
- java 竖线分割字符串的问题
java 竖线分割字符串的问题 例1: String[] paraStr = "6010;320100;A".split(";"); System.out.pr ...
- Replace是替代 Split分割字符串
Replace是替代 Split分割字符串string[] ReadText = str.Replace("\r\n", "@").Split('@'); Sp ...
- C# Split的用法,Split分割字符串
C# Split的用法,Split分割字符串 分割单个字串:string str="来自张三的亲切问候!;string[] strarry=str.Split(new string[] { ...
- C#的String.Split 分割字符串用法详解的代码
代码期间,把代码过程经常用的内容做个珍藏,下边代码是关于C#的String.Split 分割字符串用法详解的代码,应该对码农们有些用途. 1) public string[] Split(params ...
- Java StringTokenizer分割字符串
除了String本身的split方法,JDK在很早就提供了StringTokenizer这个类来分割字符串: 不过,由于正则表达式和String本身的功能越来越多,StringTokenizer已经被 ...
- SQLServer实现split分割字符串到列
网上已有人实现sqlserver的split函数可将字符串分割成行,但是我们习惯了split返回数组或者列表,因此这里对其做一些改动,最终实现也许不尽如意,但是也能解决一些问题. 先贴上某大牛写的sp ...
- PLSQL Split分割字符串
系统自带的split,使用起来方便,但是如果字符串太长,可能会出现异常,这里,我自己写了一个也是该名字,放在自己的包中,引用的时候带包名就好了. --系统自带的函数 /*CURSOR cur_temp ...
- String.split()分割字符串方法
split方法的主要用处就是:分割字符串 split方法返回的是数组类型 主要由以下几种用法: 1.比如有一个字符串var str = "bcadeab";对str使用split方 ...
- C#中使用split分割字符串的几种方法小结
1.用字符串分隔: using System.Text.RegularExpressions;string str="aaajsbbbjsccc";string[] sArray= ...
随机推荐
- 使用OpenWrt实现IPv6 DDNS
OpenWrt 增加 crontab 任务 在/root/crontab/ 目录下, 创建脚本 ddns.sh #!/bin/sh # 远程php脚本的URL地址 SERVICE_URL=http:/ ...
- Vue+SpringBoot+ElementUI实战学生管理系统-3.表结构设计
1.章节介绍 前一篇介绍了如何搭建前端工程,这一篇讲一下表结构设计,需要的朋友可以拿去自己定制.:) 2.获取源码 源码是捐赠方式获取,详细请QQ联系我 :)! 3.项目截图 登录页 列表操作 动态图 ...
- Oracle insert all语句介绍
Oracle 中insert语句的高级用法,INSERT ALL 语句介绍: 1.无条件insert all 全部插入 CREATE TABLE t1(product_id NUMBER, produ ...
- Java使用正则表达式判断字符串中是否包含某子字符串
需求: 给定一个字符串s,判断当s中包含"tree fiddy"或"3.50"或"three thirty"子字符串返回true,否则返回f ...
- dp题单——区间dp
一.基本概念 1.链式区间dp for(int len = 2; len <= n; len++){ //枚举区间长度 for(int i = 1; i + len - 1 <= n; i ...
- 以二进制文件安装K8S之部署etcd高可用集群
概述 前提条件:已经准备好CA根证书(etcd在制作CA证书时需要CA根证书),并且把CA根证书文件ca.key和ca.crt拷贝到3个etcd节点的/etc/kubernetes/pki目录下. 3 ...
- Jenkins共享库使用
简单使用 共享库(Shared libraries)是一种可以用来封装函数.变量甚至整个 Pipeline 的机制.通过共享库,可以将常用的功能和流程逻辑定义在单独的 Groovy 脚本中,然后在多个 ...
- 解决macOS Big Sur系统pyenv不能安装python3.6.x版本的问题及pyenv-virtualenv的安装使用
前置 先安装好pyenv brew install pyenv 配置环境 echo -e 'if command -v pyenv 1>/dev/null 2>&1; then\n ...
- 06-Redis系列之-哨兵(Redis-Sentinel)和集群详解和搭建
主从架构高可用 主从架构存在的问题 主从复制,主节点发生故障,需要做故障转移.(可以手动转移:让其中一个slave变成master) 主从复制,只有主写数据,所以写能力和存储能力有限 总结:redis ...
- 【LeetCode剑指offer 01】数组中重复的数字、两个栈实现队列
数组中重复的数字 数组中重复的数字 找出数组中重复的数字. 在一个长度为 n 的数组 nums 里的所有数字都在 0-n-1 的范围内.数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数 ...