String abc = "a,b,c,d,,,";
String[] arr = abc.split(",");
System.out.println(arr.length);
产出是4。但显然我的期望是7。这是我的解决方案:
String abc = "a,b,c,d,,,";
abc += "\n";
String[] arr = abc.split(",");
System.out.println(arr.length);
为什么会发生这种情况?任何人都可以给我一个更好的解决方案?
使用:
String[] arr = abc.split("(?=,)");
拆分
您可以使用lookahead:
String abc = "a,b,c,d,,,";
String[] arr = abc.split("(?=,)");
System.out.println(arr.length); //7
使用采用两个参数的替代版本的String#split()
来实现这一点:
String abc = "a,b,c,d,,,";
String[] arr = abc.split(",", -1);
System.out.println(arr.length);
这张照片
7
从上面链接的Javadoc:
如果n为非正,则模式将尽可能多次应用,数组可以有任意长度。如果n为零,则模式将被尽可能多次应用,数组可以有任何长度,后面的空字符串将被丢弃。
问题内容: 我有一个模糊的字符串,像这样: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。(编辑:我想我的意思是那些已经属于JDK或已经属于诸如Apache Commons之类的常用库的库。) 上面的字符串应分为: 注意:这不是CSV文件,它是文件中包含的单个字符串,具有较大的整体
问题内容: 我有这样一个字符串: 我想按逗号分割-但我需要忽略引号中的逗号。我怎样才能做到这一点?似乎正则表达式方法失败了;我想我可以在看到报价时手动扫描并进入其他模式,但是使用预先存在的库会很好。 上面的字符串应分为: 问题答案: 可以使用正则表达式 输出:
问题内容: 我有一个长度未知的字符串,看起来像这样 将这些字符串用逗号分隔的最佳方法是什么,以便每个单词都可以成为的元素? 例如 问题答案: 你可以这样做: 基本上,该方法将根据你正在传递的(在这种情况下)定界符来分割字符串,并将返回字符串数组。 但是,你似乎位于字符串列表而不是数组之后,因此必须使用该实用程序将数组转换为列表。就像供你参考一样,你也可以这样做: 但是通常最好是对接口进行编程,而不
问题内容: 我有一个看起来像这样的字符串: 我要返回的是在每个第三个逗号后被拆分的,因此结果如下所示: 我发现了类似的功能,但它们不会以逗号分隔n个。 问题答案: 您可以尝试将方法与正则表达式一起使用 演示版 输出: 说明 表示一个数字,与[0-9]相同,例如或 表示一个或多个数字,例如或 表示一个或多个后跟逗号的数字,例如或 会接受三个数字,并且它们之间用逗号隔开 表示最后一个匹配项,或者如果没
问题内容: 我有一个像这样的字符串: 上面的字符串应分为: 问题答案: 我认为最简单的解决方案是处理输入字符串char-by-char: 例: 作为免费赠品,此解决方案还根据需要计算嵌套括号: 它还检查括号是否平衡(每个开放的括号都有相应的结束符)。
输入字符串用逗号分隔。但它可能包含双引号内的逗号,需要忽略。下面是示例字符串 下面是我用来拆分逗号的代码,但如果逗号是双引号中字符串的一部分,它就会失败。 所以任何解决这个问题的想法。