java jdk String的split方法,在分割字符串的时,如果分割标记在字符串的开始处,在分割结束后,字符串数组的第一个元素为空,会给业务逻辑的处理带来小小的麻烦。改造一下。
package cn.com.king.util; import java.util.ArrayList; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; public class StringUtil { /** * 字符串分割,如果分隔符在首位,在splitChar为false时,首位的空将被忽略。这是和jdk中string的split的区别 * @param input 待分割的字符串 * @param regex 字符串的分割标记,正则表达式 * @param splitChar 是否包含分割标记,默认为不包含 * @param isAfter 分割标记附加在截取字符串的前面还是后面,默认前面 * @return List<String>字符串列表 */ public static List<String> split(String input, String regex, boolean splitChar, boolean isAfter) { List<String> list = new ArrayList<String>(); if (null == input || "".equals(input)) { return list; } int beginIndex = 0; int length = input.length(); Pattern pattern = Pattern.compile(regex); Matcher matcher = pattern.matcher(input); while (matcher.find()) { int matcherStart = matcher.start(); int matcherEnd = matcher.end(); String ele = ""; if (splitChar && isAfter) { ele = input.substring(beginIndex, matcherEnd); } else { ele = input.substring(beginIndex, matcherStart); } //if包含分割符,else不包含分割符 if (splitChar) { if (isAfter) { beginIndex = matcherEnd; } else { beginIndex = matcherStart; } } else { beginIndex = matcherEnd; } //如果分隔符在字符序列的头位置,就忽略。这是java正则表达式本身的分割机制所致。 if (0 == matcherStart && false == isAfter) { continue; } list.add(ele); } if (beginIndex < length) { list.add(input.substring(beginIndex)); } return list; } /** * 字符串分割 * @param input 待分割的字符串 * @param regex 字符串的分割标记,正则表达式 * @param splitChar 是否包含分割标记,默认为不包含 * @return List<String>字符串列表 */ public static List<String> split(String input, String regex, boolean splitChar) { return split(input, regex, splitChar, false); } /** * 字符串分割 * @param input 待分割的字符串 * @param regex 字符串的分割标记,正则表达式 * @return List<String>字符串列表 */ public static List<String> split(String input, String regex) { return split(input, regex, false); } public static void main(String[] args) { System.out.println(split("#menu*A#123#12*中文#444", "\\*|#")); System.out.println(split("menu", "\\*|#")); } }
相关推荐
83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中String构造方法.zip83.java中...
85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中String构造方法.zip85.java中...
java中String类的intern、split方法的详细讲解。
java的String[] split 示例
java中String类型转换方法.pdf
Java中经常用到的String类方法。这些都是比较常用的。欢迎下载!
在JDK1.5中,String类增加了一个非常有用的静态函数format(String format, Objece... argues),可以将各类数据格式化为字符串并输出。其中format参数指定了输出的格式,是最复杂也是最难掌握的一点,而argues则是一...
5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5....
JAVA String.format 方法使用介绍
java String 使用详解,看完对String 的用法完全掌握
C++重写String类C++重写String类C++重写String类C++重写String类
String.split()方法使用总结
扩展String功能方法:一直好忙,没有时间写属于自己的东西,但是看着一天天不更新心情也不是个滋味,只有从网上收罗一些比较好的东东贴上。
java基础String类选择题练习题,文档包含了答案与分析,适合学习用,本文档仅仅用于学习分享,不得用于商业用途
写了string类的一些简单的运算符重载,还有构造函数的重载等基本操作。
本文主要介绍了java String类常用方法的例子,具有很好的参考价值,下面跟着小编一起来看下吧
Java String与Byte类型转换;用到网络编程.
java String 编写的数据结构,一些基本的函数应用,适合初学者
重写String类 实现其各个模块的功能。 构造函数 析构函数 常考面试题
有关Java String常用方法的总结.docx