今天在使用String.split()方法时因为使用"|"作分割符,总是得不到结果。于是在网上Google了一下,终于找到了答案。
在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。
我们看jdk doc中说明
public String[] split(String regex)
Splits this string around matches of the given regular expression.
参数regex是一个 regular-expression的匹配模式而不是一个简单的String,他对一些特殊的字符可能会出现你预想不到的结果,比如测试下面的代码:
用竖线 | 分隔字符串,你将得不到预期的结果
String[] aa = "aaa|bbb|ccc".split("|");
//String[] aa = "aaa|bbb|ccc".split("\\|"); 这样才能得到正确的结果
for (int i = 323 ; i <aa.length ; i++ ) {
System.out.println("--"+aa);
}
用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。
String[] aa = "aaa*bbb*ccc".split("*");
//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果
for (int i = 323 ; i <aa.length ; i++ ) {
System.out.println("--"+aa);
}
显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。
"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。
还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:
String[] aa = "aaa\\bbb\\bccc".split("\\\\");
另在JDK API里找到此段说明,大意是为了防止正则表达式里的转义符与java语句里的"\"搞混,特用"\\"作转义符。
分享到:
相关推荐
然而,有时候开发者可能会遇到一个问题,即使用`split()`时,结尾的空字符串可能会丢失。这个问题在标题和描述中已经明确指出,现在我们将深入探讨这个问题及其解决方案。 首先,让我们看一个简单的例子: ```java ...
`String.prototype.split()`函数是JavaScript中的一个关键方法,用于将字符串分割成数组,根据提供的分隔符进行切割。然而,在不同浏览器,尤其是IE浏览器的不同版本之间,这个函数的行为可能会有所差异,这给开发者...
在这个例子中,我们创建了一个辅助函数`split`,它使用`std::getline`读取字符串直到遇到分隔符。 4. **JavaScript中的字符串拆分** JavaScript的`String.split()`方法与Python和Java类似: ```javascript let s = ...
通过本文的介绍,我们可以看到,在PB环境中自定义`split()`方法不仅能够解决实际开发中遇到的问题,而且其设计简洁实用,易于理解和使用。这种方法不仅可以提高开发效率,还能帮助开发者更好地组织和处理数据。希望...
当遇到需要使用特殊字符或者多个字符作为分隔符的情况时,可以借助正则表达式库(RegEx)的`Split`方法。如示例所示,`RegEx.Split`允许我们使用任意正则表达式模式作为分隔符,如在`"||"`分隔的字符串中,可以使用`...
为了解决这一问题,本文将详细介绍如何在C++Builder中实现一个简单的`Split`函数,并通过示例代码展示其使用方法。 #### 分割字符串的基本概念 在处理文本数据时,经常需要将一个较长的字符串分割成多个子串,以便...
String类的split()方法使用正则表达式来分割字符串。为了匹配空白字符,可以使用"\s+",但由于Java的字面量转义,实际传入的参数应该是"\\s+"。 6. **substring()方法的工作原理** 在JDK 6中,substring()方法...
对于多个字符串的连接,除了使用`+`操作符外,`StringUtil`提供了`join()`方法,它可以更高效地将字符串数组合并成一个字符串,尤其是在处理大量数据时。 3. **字符串分割** `split()`方法允许我们将字符串按照...
- `Int32.Parse`方法在遇到无法转换的字符串时,会抛出`FormatException`异常,确保了数据转换的准确性,但增加了程序的脆弱性。 - `Int32.TryParse`是两者的折衷,它不会抛出异常,而是通过返回一个布尔值表示...
- 遍历参数字符串数组,使用`split`方法将每个元素按照等号(`=`)分割成键值对。 - 将键转换为小写形式存储到对象中,以避免大小写不一致导致的问题。 4. **返回参数值**: - 通过传入的参数名从`paramObj`对象...
在实际应用中,你可能会遇到更复杂的场景,比如处理多字符分隔符、忽略空格、处理转义字符等,这些都是在字符串处理时需要考虑的问题。通过熟悉这些基础知识,你可以更有效地处理各种字符串处理任务。
这些自定义方法不仅可以提高代码的可读性和可维护性,还能帮助我们解决实际开发中遇到的问题。当然,在实际应用中还需要根据具体需求选择合适的方法,并注意可能的安全风险,例如XSS攻击等。希望这些扩展函数能够为...
在JavaScript中,数组和字符串操作中常常会遇到一些相似但功能各异的方法,其中`slice`、`splice`和`split`就是三个容易混淆的函数。接下来我们将深入理解它们的用法和区别。 **1. `slice()`** `slice()`方法主要...
- **Java中的String类方法**:除了`split()`方法外,String类还提供了许多其他有用的方法,如`matches()`、`replace()`等,这些方法都可以帮助我们在处理字符串时更加灵活。 #### 七、总结 本文介绍了如何使用Java...
在Android开发中,字符串(String)是经常被使用的数据类型,特别是在处理用户界面、网络通信以及数据存储时。本文将深入探讨“android字串的拆分问题”,并提供相关的解决方案。 字符串拆分是处理文本数据时的一项...
- **字符串分割**:使用 `String.Split()` 方法来分割字符串。 ```csharp string sentence = "Hello,C#,World"; string[] words = sentence.Split(','); ``` #### 2. 数组和集合操作 数组和集合是C#编程中非常...
当你遇到上述问题,即最后一个字段后面有多个连续的制表符,但这些空格或制表符没有被正确拆分,你可以通过向 `split()` 方法传递一个额外的参数来解决这个问题: ```java String[] values = line.split("\t", -1);...