Brief introduction to Java String Split 【简单介绍下Java String Split】
Split is a common function in Java. It split a full string to an array based on delimeter.
For example, split "a:b:c" with ":" results in [a, b, c]
In some scenario, it's better to keep the delimeter instead of discard it while splitting.
Here are some strategies.
分割(split) 是java里一个常用的函数,它根据分隔符将完整的字符串切分成数组
比如 "a:b:c"通过":"切分会得到数组[a, b, c]
然而某些场景下,可能我们想要保留分隔符
这里是一些保留分隔符的方法
System.out.println(Arrays.toString("a:b:c".split(":"))); //normal split//[a, b, c]System.out.println(Arrays.toString("a:b:c".split("(?=:)"))); //look behind//[a, :b, :c]System.out.println(Arrays.toString("a::b:c".split("(?=:)"))); //look behind//[a, :, :b, :c]System.out.println(Arrays.toString("a:b:c".split("(?<=:)"))); //look ahead//[a:, b:, c]System.out.println(Arrays.toString("a:b:c".split("(?!:)"))); //look ahead//[a:, b:, c]System.out.println(Arrays.toString("a:b:::c".split("(?!=:)"))); //look bothway//[a, :, b, :, :, :, c]System.out.println(Arrays.toString("a:b:::c".split("(?<=:)|(?=:)"))); //look bothway//[a, :, b, :, :, :, c]
Look ahead 前向结合
delimeter will be attached to the previous string
分隔符会附加在前向字符串后面
Look behind 后向结合
delimeter will be attached to the subsequent string
分隔符会附加在后向字符串前面
Look bothway 完全分离
similar to normal split, but every delimeter will be included in the array
和普通分割很像,但每个分隔符也会出现在数组中
Some interesting usage
一些有趣的用法
System.out.println(Arrays.toString("1a2bb3ccc".split("(?<=[a-z])(?=[0-9])"))); //digit + [a-z]characters//[1a, 2bb, 3ccc]System.out.println(Arrays.toString("1_1112_222aditional3_333".split("(?<=_..)"))); //"_" with 2 more chars//[1_11, 12_22, 2aditional3_33, 3]System.out.println(Arrays.toString("1_1112_222aditional3_3333".split("(?<=_.{3})"))); //"_" with 3 more chars//[1_111, 2_222, aditional3_333, 3]System.out.println(Arrays.toString("1_1112_222aditional3_33".split("(?<=_.{3})"))); //"_" with 3 more chars//[1_111, 2_222, aditional3_33]
Brief introduction to Java String Split 【简单介绍下Java String Split】的更多相关文章
- 算法笔记_071:SPFA算法简单介绍(Java)
目录 1 问题描述 2 解决方案 2.1 具体编码 1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...
- Java内存分析简单介绍
原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11904422.html Java内存分析简单介绍: 1. # 设置内存溢出时自动生成堆内存快照 ...
- 介绍下Java内存区域(运行时数据区)
介绍下Java内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域.JDK 1.8 和之前的版本略有不同. 下图是 JDK 1.8 对JV ...
- Java简单介绍及Java生态
核心思想:面向对象编程,继承,高兼容(代码移植性强),开源,避免重复造轮子(使用mybatis,spring,redis等技术只需要将jar包依赖添加到项目中即可,jar包内就是技术核心代码,而这些框 ...
- java框架复习 简单介绍 (转载)
一.SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 Spring Web MVC是一种基于Java的实现了Web MV ...
- java随机数Reandom(简单介绍)
简单介绍 Java中存在着两种Random函数 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0, ...
- Java提高篇—— 简单介绍Java 的内存泄漏
java最明显的一个优势就是它的内存管理机制.你只需简单创建对象,java的垃圾回收机制负责分配和释放内存.然而情况并不像想像的那么简单,因为在Java应用中经常发生内存泄漏. 本教程演示了什么是内存 ...
- java注解的简单介绍
什么是注解 1.注解就是Annontation,Annontation是Java5开始引入的新特征,中文名称叫做注解,它提供了一种安全的类似注释的机制,可以起到减少配置的成果,给程序起到辅助性的作用 ...
- 简单了解下java中的堆、栈和方法区。
堆.栈.方法区 1,首先了解下java中的数据类型. ①java中的八大基本数据类型:boolean, char , byte, short, int, long , float , double. ...
随机推荐
- Android Studio开发遇到程序崩溃问题
在用Android Studio开发过程中,经常遇到程序本身没有错误,但运行起来却总是挂掉,具体有如下几个解决方案: 1.将运行在真机上的app卸载,重新运行安装 2.在Build选项中有一个clea ...
- Docker建立本地Registry
从容器运行一个Registry # docker run -p : registry 查看yelinyuntest/static_web镜像 # docker images yelinyuntest/ ...
- 实验楼-2-Linux基础快捷键
终端:本质上对应着Linux上的/dev/tty设备 shell:打开终端,shell则自动打开 可以在终端直接输入: echo "hello world" /*shell程序自动 ...
- JvisualVM、JMC监控远程服务器
修改服务器上jmxremote.access与jmxremote.password,输入命令: find -name jmxremote.access进入该jmxremote.access文件所在目录 ...
- JavaScript 简介及语法语句
JS脚本语言 全称JavaScript:网页里面使用的脚本语言 非常强大的语言 基础语法 注释语法 单行注释// 多行注释/**/输出语法 ...
- STM32GPIO口8种模式细致分析(类比51单片机)
关于STM32GPIO口的8种工作模式,我们先引出一些问题? STM32GPIO口如果既要输入又要输出怎么办? 1.浮空输入模式 上图红色的表示便是浮空输入的过程,外部输入时0读出的就是0,外部输入时 ...
- EDP转换IC NCS8801S:RGB/LVDS转EDP芯片
RGB/LVDS-to-eDP Converter1 Features Embedded-DisplayPort (eDP) Output 2-lane/4-lane eDP @ 1.62 ...
- Netd学习笔记
service netd /system/bin/netd class main socket netd stream 0660 root system socket dnsp ...
- MySQL学习笔记(二)—查询
一.多表连接查询 新建两张表t_user.t_order. 1.内连接 返回满足条件的所有记录. (1)显式内连接 使用inner join关键字,在on ...
- 01 The Learning Problem
什么时候适合用机器学习算法? 1.存在某种规则/模式,能够使性能提升,比如准确率: 2.这种规则难以程序化定义,人难以给出准确定义: 3.存在能够反映这种规则的资料. 所以,机器学习就是设计算法A,从 ...