2

我有以下代码:

String s = "100$ali$Rezaie" ;
String[] ar = s.split("$") ;

以下字符在拆分中不起作用:

.   $    ^

是否还有其他字符在split()方法中不被接受?

4

7 回答 7

3

to 的参数split是一个正则表达式,而不是单个字符。http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html的页面列出了在正则表达式中具有特殊含义的所有字符。

于 2013-10-17T11:45:27.693 回答
1

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split%28java.lang.String%29

正如文档所说,split将正则表达式作为参数。和等字符在正则表达式.中具有特殊含义。$^

这并不是说您不能使用这些字符来拆分字符串。不,您可以简单地转义正则表达式中的字符以使它们表现“正常”。

String[] ar = s.split("\\$");
于 2013-10-17T11:45:11.577 回答
1

像这样使用

String[] parts = str.split("\\$");

\ 实际上等同于单个 \(第一个 \ 是字符串文字中 Java 转义序列所必需的)。然后它是正则表达式中的一个特殊字符,意思是“按字面意思使用下一个字符,不要解释它的特殊含义”。

于 2013-10-17T11:45:53.160 回答
0

split()方法接受正则表达式作为其输入。无论 RegEx 有什么问题, split() 都会有问题。
以下是正则表达式教程的文档:http: //docs.oracle.com/javase/tutorial/essential/regex/

于 2013-10-17T11:45:37.877 回答
0

在 Javasplit中采用正则表达式。

在此处阅读有关正则表达式元字符的信息。他们是 :

反斜杠 \、插入符号 ^、美元符号 $、句点或点 .、竖线或竖线符号 |、问号 ?、星号或星号 *、加号 +、左圆括号 (、右圆括号括号 ) 和左方括号 [,左大括号 { 1

在大多数情况下,您可以使用反斜杠转义这些字符。在 Java 中,您需要使用第二个反斜杠来转义该反斜杠。所以为了转义你需要使用的元字符\\

所以在你的例子中:

String[] ar = s.split("\\$") ;
于 2013-10-17T11:46:03.997 回答
0

Pattern类列出了 Java 中正则表达式的使用。如果在正则表达式语法中使用,您在那里找到的任何字符都必须进行转义。

如果您想将该字符视为常规字符,则需要对其进行转义。

于 2013-10-17T11:46:40.647 回答
0

我们可以使用“\”(双斜杠)作为前缀,我们可以拆分字符串..

String s = "100$ali$Rezaie" ;
String[] ar = s.split("\\$") ;
for (String str : ar) {
System.out.println(str);
}
于 2013-10-17T11:58:07.660 回答