问题引出:用^拆分如下字符串:B0005433^1~6^01^0001~0002^1,120~2,135^1,1,1,1,1,1^1,1,1
jdk文档说明:
public String[] split(String regex)
根据给定的正则表达式的匹配来拆分此字符串。
该方法的作用是使用给定的表达式和限制参数0来调用两参数split方法。因此数组中不包括结尾空字符串。
例如:字符串"boo:and:foo"产生带有下面这些表达式的结果:
regex result
: {"boo","and","foo"}
o {"b","",":and:f"}
注:使用此方法时,limit默认是0。
public String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
此方法返回的数组包含此字符串的每个子字符串,这些子字符串由另一个匹配给定的表达式的子字符串终止或由字符串结束来终止。数组中的子字符串按它们在此字符串中的顺序排列。如果表达式不匹配输入的任何部分,则结果数组只具有一个元素,即此字符串。
limit 参数控制模式应用的次数,因此影响结果数组的长度。
limit > 0,则模式将被最多应用limit-1次,数组长度不会大于limit,而且数组的最后项将包含超出最后匹配的定界符的所有输入。
limit<0,则模式将被应用尽可能多的次数,而且数组可以是任意长度。
limit=0,则模式将被应用尽可能多的次数,数组可有任何长度,并且结尾空字符串将被丢弃。
例如:字符串"boo:and:foo"产生带有下面这些表达式的结果:
regex limit result
: 2 {"boo","and:foo"}
: 5 {"boo","and","foo"}
: -2 {"boo","and","foo"}
o 5 {"b","",":and:f","",""}
o -2 {"b","",":and:f","",""}
o 0 {"b","",":and:f"}
jdk源码:
public String[] split(String regex, int limit) {
return Pattern.compile(regex).split(this, limit);
}
//将给定的正则表达式编译到模式中。
//public static Pttern compile(String regex)
public static Pattern compile(String regex) {
return new Pattern(regex, 0);
}
private Pattern(String p, int f) {
pattern = p;
flags = f;
// Reset group index count
capturingGroupCount = 1;
localCount = 0;
if (pattern.length() > 0) {
compile();
} else {
root = new Start(lastAccept);
matchRoot = lastAccept;
}
}
我们可以看到该方法最终是使用的正则表达式来拆分的。具体的文档写的很清楚。请参考jdk开发文档。
public class Test {
public static void main(String[] args) {
String str = "B0005433^1~6^01^0001~0002^1,120~2,135^1,1,1,1,1,1^1,1,1";
System.out.println(Arrays.toString(Pattern.compile("[/p{^}]").split(str)));
}
}
注: 此写法会按照[、/、^三个字符来分割,所以我需要改成[{^}]或者\\^即可。
除了使用split()方法以外,我们还可以使用StringTokenizer来处理。
String xhrStr = "B0005433^1~6^01^0001~0002^1,120~2,135^1,1,1,1,1,1^1,1,1";
StringTokenizer toker = new StringTokenizer(xhrStr,"^");
String[] xhrArr = new String[toker.countTokens()];
int x = 0;
while(toker.hasMoreTokens()){
xhrArr[x] = toker.nextToken();
x++;
}
在java3编程思想中说:正则表达式取代了先前版本中所有与"用标记断开"相关的类。
在java4编程思想中就已经不提倡用 StringTokenizer 来解决了,支持用正则表达式来分割字符串。
分享到:
相关推荐
在Java编程语言中,分割字符串是一项常见的操作,它允许我们将一个长字符串分解成多个子字符串,每个子字符串对应原字符串中的某个部分。这通常通过使用`String`类提供的`split()`方法来完成。本篇文章将深入探讨...
在本教程中,我们将深入探讨如何使用正则表达式来拆分字符串,这对于数据处理和文本分析尤其有用。下面将详细阐述正则表达式的概念、语法以及如何在不同编程语言中实现字符串的拆分。 1. 正则表达式基础 - **模式...
Java中,我们使用`String`类的`split()`方法来拆分字符串。这个方法接受一个正则表达式作为参数,例如: ```java String str = "apple|banana|grape"; String[] fruits = str.split("|"); for (String fruit : ...
- `split()`:根据指定分隔符将字符串拆分为字符数组。 6. **字符串查找与替换**: - `indexOf()`和`lastIndexOf()`:查找子字符串首次出现或最后一次出现的位置。 - `contains()`:检查字符串是否包含指定子...
在许多编程语言中,包括Python、Java、C++和JavaScript等,都有内置的函数或方法来帮助我们处理字符串,其中包括拆分字符串。"用string拆分字符串.zip"这个压缩包可能包含了关于如何在不同编程语言中使用字符串拆分...
在许多编程语言中,如Python、Java、JavaScript等,都提供了内置的字符串分割功能。这个功能允许我们将一个长字符串依据特定的分隔符切割成多个子字符串,从而方便我们进行数据解析、处理和分析。 在Python中,`...
java处理xml字符串,拆分,组装,很方便
创建一个字符串“HelloWorld!!!”,将这个字符串拆分并转换成集合的方法。 自己也可以修改成汉字string类型。
拆分字符串的方法: 在Java中,我们通常使用 `substring()` 方法来提取子字符串。这个方法接受两个参数,第一个参数是起始索引,第二个参数是结束索引(不包括在子字符串内)。例如,`s.substring(i, j)` 将返回从...
比如,从CSV文件中读取数据,每行数据由逗号分隔,我们先用split(',')拆分字符串,然后根据需要将拆分出的子字符串转换为对应的数值类型。此外,处理URL参数、XML或JSON格式的数据时,也会频繁地进行这两步操作。 ...
本篇暑假培训学习笔记将深入探讨如何使用Java进行字符串拆分,主要聚焦于利用正则表达式进行拆分的方法。 字符串拆分是将一个大的字符串依据特定的规则分割成多个子字符串的操作。在Java中,我们可以使用`String`类...
这一步是将字符串拆分为单个字符的基础。 #### 集合框架 - **HashSet**: `HashSet` 是基于 `HashMap` 实现的一个不包含重复元素的集合。在这个例子中,它用来存储字符串中的所有唯一字符。 - **HashMap**: `HashMap...
- `split(String regex)`:根据正则表达式拆分字符串为字符串数组。 #### 实例代码分析 以下代码演示了字符串的初始化和输出: ```java public class Str2 { public static void main(String[] args) { String...
在Java编程中,处理海量字符串是一项常见的挑战,尤其是在大数据处理、日志分析或者文本挖掘等场景。本资源“Java源码海量字符串的快速操作”旨在提供解决方案,通过优化的算法和数据结构,提高大规模字符串操作的...
7、编程:编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我ABC”而不是“我...
### Java判断字符串是否包含汉字的方法 在开发过程中,有时我们需要判断一个字符串是否包含汉字,并根据判断的结果执行不同的逻辑。这通常出现在需要处理多语言输入的情况下,例如用户输入验证、文本分析等场景。...
这里的 `regex` 参数是一个正则表达式,用于定义拆分字符串的规则。在本例中,我们使用 "\t" 作为分隔符,表示我们要按照制表符拆分字符串。 当你遇到上述问题,即最后一个字段后面有多个连续的制表符,但这些空格...
- `split()`方法是实现字符串分割的核心工具,它能按照指定的分隔符(正则表达式)将字符串拆分成数组。 - 例如,如果字符串`"a,b,c"`,调用`str.split(",")`会得到`["a", "b", "c"]`的数组。 5. **将字符串转换...
在编程领域,经常需要处理字符串数据,特别是在Android应用开发中,我们可能会遇到需要将一个长字符串按照特定分隔符进行拆分的情况。标题中的“字符串中分离特定字符串隔开的字符串”就是一个典型的字符串处理问题...
分词是将输入字符串拆分成一系列有意义的单元,称为“词”或“标记”。在算式中,这些词可能包括数字、运算符、括号等。例如,字符串 "2 + 3 * 4" 将被拆分为 ["2", "+", "3", "*", "4"]。 3. **语法分析(Parsing...