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= ...
随机推荐
- ysoserial CommonsCollections1 分析
/* Gadget chain: ObjectInputStream.readObject() AnnotationInvocationHandler.readObject() Map(Proxy). ...
- 使用 MSYS2 编译 exe 可执行程序
MSYS2 是一个在 Windows上 运行的软件环境,它提供了一种在 Windows 上使用 GNU 工具链的方式,包括 GCC 编译器和 GNU Make 构建系统. 在 MSYS2 中,你可以使 ...
- 【LeetCode哈希表】前k个高频词,利用哈希表+vector进行排序操作
前k个高频词 https://leetcode.cn/problems/top-k-frequent-words/ 给定一个单词列表 words 和一个整数 k ,返回前 k 个出现次数最多的单词. ...
- CXP协议的传输层介绍 8b/10b编码
8b/10b编码与K码 upconnection 和downconnection均使用8b/10b编码,因此我们先简单回顾一下8b/10b吧 8B/10B编码被广泛应用到高速串行总线,如IEEE139 ...
- 【Azure 环境】Windows中安装Python azure-eventhub-checkpointstoreblob-aio模块时出错 ERROR: Could not install packages due to an EnvironmentError: [Errno 2] No such file or directory:
问题描述 在使用Python代码接受EventHub的消息时,根据文档要求安装azure-eventhub-checkpointstoreblob-aio模块时,出现了如下错误: ERROR: Cou ...
- 了解 Docker 网络
本章将会简单地讲述 Docker 中的网络,对于 CNM.Libnetwork 这些,限于笔者个人水平,将不会包含在内. Docker 的四种网络模式 Docker 有 bridge.none.hos ...
- 基于图数据库 NebulaGraph 实现的欺诈检测方案及代码示例
本文是一个基于 NebulaGraph 图算法.图数据库.机器学习.GNN 的 Fraud Detection 方法综述.在阅读本文了解欺诈检测的基本实现方法之余,也可以在我给大家准备的 Playgr ...
- Java 线程通信 例子:使用俩个线程打印1-100.线程1 线程2 交替打印
1 package bytezero.threadcommunication; 2 3 /** 4 * 线程通信的例子:使用俩个线程打印1-100.线程1 线程2 交替打印 5 * 6 * 涉及到的三 ...
- Java //100以内的质数的输出(从2开始,到这个数-1结束为止,都不能被这个数本身整除)+优化
1 //100以内的质数的输出(从2开始,到这个数-1结束为止,都不能被这个数本身整除) 2 boolean isFlag = true; //标识i是否被j除尽,修改其值 3 4 for(int i ...
- 牛客周赛34(A~E)
A 两种情况 两个字符相同只有2 两个字符不相同4 #include <bits/stdc++.h> #define int long long #define rep(i,a,b) fo ...