10

我有一个这样的字符串

"myValue"."Folder"."FolderCentury";

我想从点(“。”)分裂。我正在尝试使用以下代码:

String a = column.replace("\"", "");
String columnArray[] = a.split(".");

columnArray空空如也。我在这里做错了什么?

我想在这里再添加一件事,它可能的字符串数组对象将包含吐出的值,如下面提到的只有两个对象而不是三个。?

columnArray[0]= "myValue"."Folder";
columnArray[1]= "FolderCentury";
4

5 回答 5

44

请注意,String#split需要一个regex

您需要转义特殊字符 .(这意味着“任何字符”):

 String columnArray[] = a.split("\\.");

(转义正则表达式由 完成\,但在 Java 中,\写为\\)。

您还可以使用Pattern#quote

返回指定字符串的文字模式字符串。

String columnArray[] = a.split(Pattern.quote("."));

通过转义正则表达式,您告诉编译器将.视为字符串 .而不是特殊 char .

于 2013-08-29T10:15:19.110 回答
3

你必须逃脱这个点。

String columnArray[] = a.split("\\.");
于 2013-08-29T10:15:37.117 回答
2

split() 接受正则表达式。所以你需要跳过'。不要将其视为正则表达式元字符。

String[] columnArray = a.split("\\."); 
于 2013-08-29T10:18:47.143 回答
1

使用特殊字符时需要使用特定的转义序列。

'。' 是一个特殊字符,所以需要在 '.' 之前使用转义序列。像:

 String columnArray[] = a.split("\\.");
于 2013-08-29T10:19:53.067 回答
1

下一个代码:

   String input = "myValue.Folder.FolderCentury";
   String regex = "(?!(.+\\.))\\.";
   String[] result=input.split(regex);
   System.out.println(Arrays.toString(result));

产生所需的输出:

[myValue.Folder, FolderCentury]

正则表达式通过负前瞻(这(?!)部分)进行了一些调整,因此它只会匹配字符串上的最后一个点,其中包含多个点。

于 2013-08-29T11:28:42.917 回答