拆分Java String返回空数组?

时间:2013-08-29 10:14:49

标签: java split

我有一个像这样的字符串

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

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

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

columnArray空洞。我在这做错了什么?

我想在这里再添加一个东西,其可能的String数组对象将包含spitted值,如下面提到的只有两个对象而不是三个。?

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

5 个答案:

答案 0 :(得分:31)

请注意,String#split需要正则表达式

你需要逃避special char .(这意味着“任何角色”):

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

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

您还可以使用Pattern#quote

  

返回指定String的文字模式String

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

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

答案 1 :(得分:3)

你必须逃脱这一点。

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

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

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

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

答案 4 :(得分:1)

下一个代码:

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

生成所需的输出:

[myValue.Folder, FolderCentury]

正则表达式略微调整了负面预测(此(?!)部分),因此它只会匹配具有多个点的字符串上的最后一个点。