从正则表达式输出中删除空字符串

时间:2013-01-15 13:00:28

标签: java regex string

我的字符串看起来像这样: [item 1, item2, item3]

我想要的输出是:

item 1
item2
item3

我写了这段代码:

String text = "[item 1, item2, item3]";
String[] text_output = text.split(", |\\[|\\]");
for(String item:text_output)
    fileOutStream.write(("\n"+item).getBytes());

并且我得到的输出是正确的,区别在于输出数组中第一个元素是空字符串。我做错了什么?

3 个答案:

答案 0 :(得分:3)

您已请求将字符串拆分为[],以便系统遵循并认为[之前的空白区域是您的第一个元素。您可以通过多种方式继续:

  1. 在拆分之前使用text.replaceAll("\\[|\\]", "");
  2. 在分割之前硬编码消除第一个和最后一个字符:text.substring(1, text.length()-1);
  3. 使用正匹配而不是否定匹配:

    Pattern.compile("[^,\\[\\]]+").matcher().find()
    

答案 1 :(得分:0)

当您尝试拆分并且第一个字符是您要拆分的字符时会发生这种情况。你应该创建一个新的数组,而不是选择第一个元素(空元素)。

String[] text_output = text.substring(1).split(", |\\[|\\]");

如果你想删除第一个字符,你可以使用它,你将拥有你想要的输出。请记住,当您尝试拆分并且第一个字符是拆分之一时会发生这种情况。

答案 2 :(得分:0)

首先是空字符串,因为你也使用\\[进行拆分,所以你的字符串中的第一个元素是[。只是忽略你的第一个元素。