2

我有看起来像这样的字符串: [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());

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

4

3 回答 3

3

您已请求在 处拆分字符串,[因此]系统服从并将 之前的空白空间[视为您的第一个元素。您可以通过多种方式进行操作:

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

    Pattern.compile("[^,\\[\\]]+").matcher().find()
    
于 2013-01-15T13:02:03.310 回答
0

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

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

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

于 2013-01-15T13:02:46.273 回答
0

首先是空字符串,因为您也正在使用它进行拆分\\[,因此第一个元素[在您的字符串中。只需忽略您的第一个元素。

于 2013-01-15T13:04:07.733 回答