转自http://othella.iteye.com/blog/226988
使用String.split方法时遇到的问题(转载)
http://blog.csdn.net/jame_peng/archive/2006/05/22/749308.aspx
使用String.split方法时遇到的问题
今天在使用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 = 0 ; i <aa.length ; i++ ) {
System.out.println("--"+aa[i]);
}
用 * 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。
String[] aa = "aaa*bbb*ccc".split("*");
//String[] aa = "aaa|bbb|ccc".split("\\*"); 这样才能得到正确的结果
for (int i = 0 ; i <aa.length ; i++ ) {
System.out.println("--"+aa[i]);
}
显然,+ * 不是有效的模式匹配规则表达式,用"\\*" "\\+"转义后即可得到正确的结果。
"|" 分隔串时虽然能够执行,但是却不是预期的目的,"\\|"转义后即可得到正确的结果。
还有如果想在串中使用"\"字符,则也需要转义.首先要表达"aaaa\bbbb"这个串就应该用"aaaa\\bbbb",如果要分隔就应该这样才能得到正确结果:
String[] aa = "aaa\\bbb\\bccc".split("\\\\");
另在JDK API里找到此段说明,大意是为了防止正则表达式里的转义符与java语句里的"\"搞混,特用"\\"作转义符。
Backslashes within string literals in Java source code are interpreted as required by the Java Language Specification as either Unicode escapes or other character escapes. It is therefore necessary to double backslashes in string literals that represent regular expressions to protect them from interpretation by the Java bytecode compiler. The string literal "\b", for example, matches a single backspace character when interpreted as a regular expression, while "\\b" matches a word boundary. The string literal "\(hello\)" is illegal and leads to a compile-time error; in order to match the string (hello) the string literal "\\(hello\\)" must be used.
String.split()用法的一点经验
http://www.e-stu.net/Article/kaishixinxi/jisuanji/jsjja/JAZYYY/2007-01-04/Article_10008.html
作者:maxine 文章来源:本站原创 点击数: 更新时间:2007-1-4 10:19:41
在java.lang包中有String.split()方法,返回是一个数组
我在应用中用到一些,给大家总结一下,仅供大家参考:
1、如果用“.”作为分隔的话,必须是如下写法:String.split("\\."),这样才能正确的分隔开,不能用String.split(".");
2、如果用“|”作为分隔的话,必须是如下写法:String.split("\\|"),这样才能正确的分隔开,不能用String.split("|");
“.”和“|”都是转义字符,必须得加"\\";
3、如果在一个字符串中有多个分隔符,可以用“|”作为连字符,比如:“acount=? and uu =? or n=?”,把三个都分隔出来,可以用String.split("and|or");
分享到:
相关推荐
然而,有时候开发者可能会遇到一个问题,即使用`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#编程中非常...
JavaScript作为一门广泛使用的前端编程语言,其在处理Number类型数值运算时往往会遇到精度问题。尤其在执行涉及浮点数的运算时,即使是非常简单的计算也可能得到意外的结果。例如,对于简单的乘法 `37.5 * 5.5`,...