我有以下代码:
String s = "100$ali$Rezaie" ;
String[] ar = s.split("$") ;
以下字符在拆分中不起作用:
. $ ^
是否还有其他字符在split()
方法中不被接受?
to 的参数split
是一个正则表达式,而不是单个字符。http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html的页面列出了在正则表达式中具有特殊含义的所有字符。
http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29
正如文档所说,split
将正则表达式作为参数。和等字符在正则表达式.
中具有特殊含义。$
^
这并不是说您不能使用这些字符来拆分字符串。不,您可以简单地转义正则表达式中的字符以使它们表现“正常”。
String[] ar = s.split("\\$");
像这样使用
String[] parts = str.split("\\$");
\ 实际上等同于单个 \(第一个 \ 是字符串文字中 Java 转义序列所必需的)。然后它是正则表达式中的一个特殊字符,意思是“按字面意思使用下一个字符,不要解释它的特殊含义”。
split()
方法接受正则表达式作为其输入。无论 RegEx 有什么问题, split() 都会有问题。
以下是正则表达式教程的文档:http: //docs.oracle.com/javase/tutorial/essential/regex/
Pattern类列出了 Java 中正则表达式的使用。如果在正则表达式语法中使用,您在那里找到的任何字符都必须进行转义。
如果您想将该字符视为常规字符,则需要对其进行转义。
我们可以使用“\”(双斜杠)作为前缀,我们可以拆分字符串..
String s = "100$ali$Rezaie" ;
String[] ar = s.split("\\$") ;
for (String str : ar) {
System.out.println(str);
}