8

我正在尝试将一行文本分成多个部分。文本的每个元素都由句点分隔。我正在使用 string.split("."); 将文本拆分为字符串数组,但无处可去。

这是代码示例:

String fileName = "testing.one.two";

String[] fileNameSplit = fileName.split(".");

System.out.println(fileNameSplit[0]);

有趣的是,当我尝试“:”而不是“。”时,它有效吗?我怎样才能让它工作一段时间?

4

6 回答 6

33

String.split()接受正则表达式(简称正则表达式),点是正则表达式中的特殊字符。这意味着“匹配除换行符之外的所有字符”。因此,您必须使用前导反斜杠对其进行转义。但是前导反斜杠是 java 字符串文字中的特殊字符。它表示一个转义序列。所以它也必须用另一个反斜杠转义。像这样:

fileName.split("\\.");
于 2012-11-19T19:20:37.260 回答
6

试试这个:fileName.split("\\.");

于 2012-11-19T19:20:31.217 回答
3
fileName.split(".");

应该

fileName.split("\\.");

. 是特殊字符并且split()接受正则表达式。因此,您需要转义特殊字符。

以反斜杠开头的字符(\)是转义序列,对编译器具有特殊意义。请阅读本文档

于 2012-11-19T19:20:28.653 回答
3

这是因为 to 的参数split是一个正则表达式,并且.基本上意味着任何字符。使用"\\."代替,"."它应该可以正常工作。

文字句点(与任何字符相反.)的正则表达式是\.(使用\转义字符强制文字解释)。

而且,因为它在一个\已经具有特殊含义的字符串中,所以您也需要对其进行转义

于 2012-11-19T19:22:28.903 回答
1

您需要转义“。” 字符,因为 split 接受正则表达式和 . 表示任何字符,因此要对 split 方法说按点拆分,您必须像这样对其进行转义:

String[] array = string.split('\\.');
于 2012-11-19T19:25:39.393 回答
0

split()接受一个正则表达式的参数

尝试使用

String[] fileNameSplit = fileName.split("\\.");
于 2012-11-19T19:25:32.333 回答