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】的更多相关文章

  1. 算法笔记_071:SPFA算法简单介绍(Java)

    目录 1 问题描述 2 解决方案 2.1 具体编码   1 问题描述 何为spfa(Shortest Path Faster Algorithm)算法? spfa算法功能:给定一个加权连通图,选取一个 ...

  2. Java内存分析简单介绍

    原创:转载需注明原创地址 https://www.cnblogs.com/fanerwei222/p/11904422.html Java内存分析简单介绍: 1. # 设置内存溢出时自动生成堆内存快照 ...

  3. 介绍下Java内存区域(运行时数据区)

    介绍下Java内存区域(运行时数据区) Java 虚拟机在执行 Java 程序的过程中会把它管理的内存划分成若干个不同的数据区域.JDK 1.8 和之前的版本略有不同. 下图是 JDK 1.8 对JV ...

  4. Java简单介绍及Java生态

    核心思想:面向对象编程,继承,高兼容(代码移植性强),开源,避免重复造轮子(使用mybatis,spring,redis等技术只需要将jar包依赖添加到项目中即可,jar包内就是技术核心代码,而这些框 ...

  5. java框架复习 简单介绍 (转载)

    一.SpringMVC http://blog.csdn.net/evankaka/article/details/45501811 Spring Web MVC是一种基于Java的实现了Web MV ...

  6. java随机数Reandom(简单介绍)

    简单介绍 Java中存在着两种Random函数 一.java.lang.Math.Random; 调用这个Math.Random()函数能够返回带正号的double值,该值大于等于0.0且小于1.0, ...

  7. Java提高篇—— 简单介绍Java 的内存泄漏

    java最明显的一个优势就是它的内存管理机制.你只需简单创建对象,java的垃圾回收机制负责分配和释放内存.然而情况并不像想像的那么简单,因为在Java应用中经常发生内存泄漏. 本教程演示了什么是内存 ...

  8. java注解的简单介绍

    什么是注解 1.注解就是Annontation,Annontation是Java5开始引入的新特征,中文名称叫做注解,它提供了一种安全的类似注释的机制,可以起到减少配置的成果,给程序起到辅助性的作用 ...

  9. 简单了解下java中的堆、栈和方法区。

    堆.栈.方法区 1,首先了解下java中的数据类型. ①java中的八大基本数据类型:boolean, char , byte, short, int, long , float , double. ...

随机推荐

  1. C++ Primer 5 CH5 语句

    5.1 简单语句 空语句: ; 5.2 语句作用域 5.3 条件语句 switch 语句:表达式与某个 case 匹配成功,执行 case 之后的语句直到 break 或者 switch 结尾,cas ...

  2. StudyJams学习历程总结

    Study Jams 是一个学习 Google 在线课程的活动.该活动由学员自发组建课程学习小组,旨在带领小组成员入门 Android 开发,最终将 Android App 上载至 Google Pl ...

  3. Struts2.5简单使用入门

    今天学了Struts2.5最新版的,老师在黑板上讲的很是简单,也很是容易,简单的就实现了.可是课下让我们自己弄,自己无论如何都无法运行成功,一直提示404.偶然间灵机一动,改了一下那个文件就好了.希望 ...

  4. bootstrap使用模板

    Bootstrap下载地址: - https://github.com/twbs/bootstrap/releases/download/v3.3.6/bootstrap-3.3.6-dist.zip ...

  5. file_get_contents和curl对于post方式的解决办法

    post方式解决办法 其实很简单,我们只要仔细看看就知道了... file_get_contents: $content=$_POST['content'];$access_token=$_POST[ ...

  6. WPF之路一:相对路径图片显示

    由于公司项目的需要,改为WPF开发,因此需要学习WPF,遇到的第一个问题就是在显示的图片的时候,写绝对路径,图片显示没有问题,但是写相对路径的时候,发现图片无法正常显示,在网上搜了一下,得到的答案是需 ...

  7. 性能调优案例分享:jvm crash的原因 2

    3.core dump分析 有了core dump文件,接下来要做的就是通过命令去解析此文件,定位具体问题了,主要有以下三个命令: (1)先执行gdb $JAVA_HOME$/bin/java cor ...

  8. Redis基础学习(三)—Key操作

    一.key的相关操作 1.删除 del key1 key2 ... Keyn 作用: 删除1个或多个键. 返回值: 不存在的key忽略掉,返回真正删除的key的数量.   2.重命名 rename k ...

  9. MySQL学习笔记(三)—索引

    一.概述 1.基本概念       在大型数据库中,一张表中要容纳几万.几十万,甚至几百万的的数据,而当这些表与其他表连接后,所得到的新的数据数目更是要大大超出原来的表.当用户检索这么大量的数据时,经 ...

  10. Activity栈与任务管理探究1——栈与任务的概述

    Activity栈与任务管理探究1--栈与任务的概述 内容概览 1. 前言 2. Activity中的Stack 3. Activity中的Task 4. Activity栈与任务管理基本原则 1. ...