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", "\\*|#")); } }
相关推荐
标题:“String类方法总结...这些方法共同构成了`String`类的核心功能,熟练掌握它们对于任何Java程序员来说都是必不可少的。无论是处理用户输入、文件读写还是网络通信,`String`类的这些方法都扮演着至关重要的角色。
2. **== 与 equals**:在 Java 中,`==` 比较的是基本类型的值或者引用类型的地址,而 `equals` 默认情况下也进行引用比较,除非对象的类重写了 `equals` 方法,此时它通常用于比较对象的内容。例如,对于 `String` ...
4. String 类的常用方法:indexOf()、charAt()、replace()、trim()、split()、getBytes()、length()、toLowerCase()、toUpperCase()、substring()、equals()、toCharArray()。 数据类型和运算符 1. 基本数据类型...
13. split(String regex) 方法:根据给定正则表达式的匹配拆分此字符串。 14. startsWith(String prefix) 方法:测试此字符串是否以指定的前缀开始。 15. substring(int beginIndex) 方法:返回一个新的字符串,它...
equals 本质上就是 ==,只不过 String 和 Integer 等重写了 equals 方法,把它变成了值比较。总结 :== 对于基本类型来说是值比较,对于引用类型来说是比较的是引用;而 equals 默认情况下是引用比较,只是很多类...
- Java中处理字符串的主要类是`String`,它提供了丰富的API来进行各种操作,如连接(`concat`)、查找(`indexOf`、`contains`)、替换(`replace`)、分割(`split`)等。 - 若要反转字符串,可以使用`...
- `interface`只能声明方法(从Java 8开始可以有默认方法和静态方法),所有方法默认是公共的。 #### 25. `abstract`方法的特性 - `abstract`方法不可以同时是`static`,因为`static`方法与类关联而不是对象。 - `...
35. 使用String的split方法可以将逗号分隔的字符串转换成数组。 36. 数组使用length属性获取长度,String使用length()方法。 37. 字符串字面量相加只会创建一个字符串对象,但通过new创建的字符串对象每次都会创建新...
- `abstract`方法不能是`static`,因为`abstract`方法必须被子类重写,而`static`方法属于类而不属于对象。 - `abstract`方法可以是`native`,表示该方法将在本地代码中实现。 - `abstract`方法不能是`synchronized`...
- 使用`split`方法可以将字符串按照分隔符分割成数组,例如:`String[] arr = str.split(",");`。 #### 36. 数组与字符串的长度方法 - 数组没有`length()`方法,但有`length`属性。 - `String`类有`length()`方法...
31. 可以使用String的split方法将逗号分割的字符串转换成数组。 32. 数组有一个length属性,而String有一个length方法,返回字符的个数。 33. 字符串拼接操作创建了多个对象,每进行一次+操作就会创建一个新的String...
在Java中,String类中的常用方法有split()、indexOf()、replace()、subString()、equals()、concat()等。其中,split()方法可以将字符串分割成字符串数组,indexOf()方法可以从指定字符提取索引位置,replace()方法...
继承允许一个类继承另一个类的属性和方法,子类可以重写父类的方法以提供不同的实现。 ```java public class Animal { public void eat() { System.out.println("吃东西"); } } public class Dog extends ...
35. 将逗号分隔的字符串转换成数组可以使用String类的split()方法。 36. 数组有length属性,用于获取数组长度,String没有length()方法,但可以使用length属性或length()方法获取字符串长度。 37. Strings="a"+"b...
- **知识点**: Java中通过方法重写和接口实现来实现多态性。 - **举例**: ```java public class Base { public void method() { System.out.println("Base"); } } public class Derived extends Base { @...
5. 分割:`split(String regex)`按照正则表达式分割字符串成数组。 三、字符串的不可变性 Java中的字符串是不可变的,这意味着一旦创建,其内容就不能改变。每次对字符串进行修改,都会创建新的字符串对象,这可能...
10. String 类的常用方法:indexOf()、charAt()、replace()、trim()、split()、getBytes()、length()、toLowerCase()、toUpperCase()、substring()、equals()。 _java 多线程知识点_ 11. 抽象类是否必须有抽象方法...
35. 将逗号分割的字符串转换成数组,可以使用String类的split方法。 36. 数组有length属性,String也有length()方法,但后者是一个方法调用。 37. 语句Strings="a"+"b"+"c"+"d"共创建了一个字符串对象。 38. try...