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. ...
随机推荐
- iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结
iOS回顾笔记(08) -- 自定义Cell的类型和创建步骤总结 项目中我们常见的自定义cell主要分为两种 等高cell:如应用列表.功能列表 非等高cell:如微博列表.QQ聊天页面 下面对这 ...
- JS清除DIV的选中状态
var clearSlct = "getSelection" in window ? function () { window.getSelection().removeAllRa ...
- 英伟达CUVID硬解,并通过FFmpeg读取文件
虽然FFmpeg本身有cuvid硬解,但是找不到什么好的资料,英伟达的SDK比较容易懂,参考FFmpeg源码,将NVIDIA VIDEO CODEC SDK的数据获取改为FFmpeg获取,弥补原生SD ...
- git 远程仓库管理
要参与任何一个 Git 项目的协作,必须要了解该如何管理远程仓库.远程仓库是指托管在网络上的项目仓库,可能会有好多个,其中有些你只能读,另外有些可以写.同他人协作开发某 个项目时,需要管理这些远程仓库 ...
- TextRank:关键词提取算法中的PageRank
很久以前,我用过TFIDF做过行业关键词提取.TFIDF仅仅从词的统计信息出发,而没有充分考虑词之间的语义信息.现在本文将介绍一种考虑了相邻词的语义关系.基于图排序的关键词提取算法TextRank [ ...
- The 15th UESTC Programming Contest Preliminary G - GC?(X,Y) cdoj1564
地址:http://acm.uestc.edu.cn/#/problem/show/1564 题目: G - GC?(X,Y) Time Limit: 3000/1000MS (Java/Others ...
- PHPSTORM下安装XDEBUG
本文不是教程安装XDEBUG,具体的请自行百度(我也是按照百度上的一步步来的). 以下纠正几点目前我安装时查看播客的不对之处: 1. Setting > PHP > DEBUG > ...
- Google永远不可能回到国内,只能是回忆
今天早上在微博上无意看 [谷歌翻译App在大陆地区恢复无障碍使用]这篇文章,不知不觉就点进去看一下,内心还是比较兴奋,为什么兴奋说不清楚.或许我们是真的喜欢Google的产品. 回想2010年Goog ...
- 【C++】智能指针详解(二):auto_ptr
首先,我要声明auto_ptr是一个坑!auto_ptr是一个坑!auto_ptr是一个坑!重要的事情说三遍!!! 通过上文,我们知道智能指针通过对象去管理指针,在构造对象时完成资源的分配及初始化,在 ...
- Python之路-计算机基础
一·计算机的组成 一套完整的计算机系统分为:计算机硬件,操作系统,软件. 硬件系统:运算器,控制器和存储器 ,输入设备,输出设备. 1.运算器:负责算数运算和逻辑运算,与控制器一起组成CPU. 2 ...