众所周知,在Java中分割字符串有两种方式split()和StringTokenizer。那么这两种方式有什么区别呢?假设我们有这样一个字符串"a|b|c",现在想通过Java程序将其按“|”分割,那么我们期望会得到3个字符串a,b,c。
先来看看第一种方式split(), 代码如下
public class SplitStringTester {
public static void main(String[] args) {
String s="a|b|c";
System.out.println(Arrays.toString(s.split("|"))); //分割后打印数组
}
}
那么结果是:[, a, |, b, |, c]
,很明显这和我们期望的结果是不一样的,为什么呢?原因就是"|"是正则表达式的关键字,所以如果要用关键字来作分割符的话,就需要将关键字转义,方法就是在"|"前加上"\\"变成"\\|"。那么修改后的代码就是:
public class SplitStringTester {
public static void main(String[] args) {
String s="a|b|c";
System.out.println(Arrays.toString(s.split("\\|"))); //分割后打印数组
}
}
这样我们就可以得到期望的结果啦。
再来看看StringTokenizer方法,代码如下:
public class SplitStringTester {
public static void main(String[] args) {
String s="a|b|c";
StringTokenizer st =new StringTokenizer(s,"|"); //注意这里还是使用正则表达式的关键字"|"作为分割符
while(st.hasMoreElements()){
System.out.print(st.nextElement());
if(st.hasMoreElements())
System.out.print(",");
}
}
}
现在让我们再来看下运行结果: a,b,c。很好这正是我们想要的结果,虽然我们依然使用了正则表达式的关键字"|"。
那么这两种方式间的差异在哪里?
split()方法采用的是正则表达式的方式来分割字符串,所以当使用正则表达式关键字作为分割符时,需要先转义;而StringTokenizer通过判断字符来完成的,所以不会受正则表达式关键字的影响。具体的差异请参看JDK源代码。
就到这里,下次见
分享到:
相关推荐
自定义函数`FUNCTION_SF_SPLIT_STRING`如上所示,是一个典型的用于分割字符串的函数,它接受两个参数:待分割的字符串`STRING`和用作分隔符的子字符串`SUBSTRING`,返回一个`VARCHAR2`类型的数组,其中包含了分割后...
-- 去除输入字符串两端的空白字符 SET @Location = CHARINDEX(@Split, @String); -- 查找第一次出现的分隔符位置 SET @Length = 1; -- 初始化子字符串数量为1,因为即使没有分隔符,也至少有一个完整的字符串 ...
2. 分隔符设置:此函数需要两个输入,一个是待拆分的字符串,另一个是作为分隔符的字符串或字符。如果字符串中包含中文分隔符,比如逗号“,”,可以直接输入这个字符。 3. 输出结果:执行后,函数会返回一个字符串...
在VB中,有两种主要的方法可以用来拆分字符串: 1. 使用`Split`函数: `Split`函数是最常用的字符串拆分方法。它接受一个字符串作为输入,并根据指定的分隔符返回一个字符串数组。基本语法如下: ```vb Dim result...
在Delphi编程环境中,处理字符串是一项常见的任务,而“按字符串分割”是字符串操作中的一个核心功能。在Delphi中,我们可以使用内建的函数或类来...理解并掌握这两种方法,能帮助你在Delphi编程中更有效地处理字符串。
2. **动态字符串分割函数**:另一种实现方式是使用动态SQL语句构建函数,例如`f_split`函数。它通过不断查找并替换分隔符,直到原字符串中不再包含分隔符为止,从而实现字符串的完全分割。这种方式特别适用于分割由...
`std::regex_token_iterator`可以按正则表达式分割字符串,这使得我们可以用更灵活的方式来分割字符串,例如: ```cpp #include #include #include std::vector<std::string> regexSplit(const std::string& ...
本文将详细介绍一种自定义的`split()`方法,该方法可以在PB环境中使用,帮助开发者轻松地将字符串按照指定的分隔符进行分割,并返回一个字符串数组。下面我们将从该方法的设计思路、参数说明、代码实现以及使用示例...
在实际应用中,可以采用两种方式调用这些自定义函数进行排序: 1. **HQL(Hibernate Query Language)调用**: ```sql SELECT * FROM table as model ORDER BY subnamestr(model.name), subnamenum(model.name); ...
在IT编程领域中,对字符串进行分割并存储到数组或集合中是一种常见的操作方式,尤其在处理批量数据更新等场景时极为有用。根据题目提供的信息,“分割字符串,放到数组”这一主题涉及到了字符串操作与数组(或集合)...
1. 分割十六进制字符串:由于每个ASCII字符由两个十六进制数字组成,我们需要将输入的十六进制字符串按每两个字符进行分割,形成一个十六进制数字的数组。 2. 转换为数值:对分割后的数组中的每个十六进制数字,...
此函数首先定义了两个输入参数`p_input_string`和`p_delimiter`,分别代表原始字符串和分隔符。然后,使用`SYS_REFCURSOR`类型来存储结果。通过`INSTR`和`SUBSTR`函数组合,函数能够有效地将原始字符串分割成多个子...
Labview编写的代码, 搜索拆分字符串
1. **字符串数据类型**:LabVIEW有两种基本的字符串数据类型,即ASCII字符串和宽字符串。ASCII字符串只能处理英文和其他单字节字符,而宽字符串则可以正确地存储和处理包括中文在内的多字节字符。 2. **字符串节点*...
在易语言中,处理十六进制和字符串的转换主要有以下几种方法: 1. **字符串转十六进制**:在易语言中,可以通过“字符串到整数”函数配合“进制转换”参数将字符串转换为十进制,再用“十进制到十六进制”函数将十...
`Split()`方法有两种重载形式:一种接受字符数组作为参数,另一种接受字符串数组作为参数。下面将详细介绍这两个版本的用法。 1. 字符数组作为参数: ```csharp string originalString = "Hello,World;This,Is,A,...
7. 字符串操作:了解strtok()函数分割字符串,以及其它如strpbrk(), strspn(), strcspn()等字符串处理函数的使用。 8. 字符数组与字符串的关系:理解如何在字符数组中操作字符串,包括动态分配内存和释放内存。 在...
- `split(String regex)`:根据给定的正则表达式将字符串分割成多个子字符串,并返回一个包含这些子字符串的数组。 ### 示例代码 ```java public class TestJavaDemo01 { public static void main(String[] args)...
根据提供的文件信息,本文将对 Navision 中的字符串分割功能进行深入探讨,并解析代码示例中的具体实现方式。 ### 一、Navision 简介 Navision 是一款由 Microsoft 提供的企业资源规划 (ERP) 解决方案,适用于中...