首页 > 解决方案 > 按条件拆分和配对子字符串

问题描述

我有一个这样的字符串:"aa-bb,ccdd,eeff,gg-gg,cc-gg". 我需要用'-'符号分割字符串并从中创建两个字符串,但如果原始字符串的逗号分隔部分不包含'-',则需要使用一些占位符字符而不是子字符串。在上述示例输出的情况下,应为:

字符串 1:

"{aa,ccdd,eeff,gg,cc}"

字符串 2:

"{bb,0,0,gg,gg}"

我不能使用该lastIndexOf()方法,因为输入在一个字符串中。我不确定零件有多少。

if(rawIndication.contains("-")){
    String[] parts = rawIndication.split("-");
    String part1 = parts[0];
    String part2 = parts[1];
}

标签: javastringsplitsubstring

解决方案


这是使用流的 Java 8 解决方案。逻辑是首先用逗号分割输入字符串,生成一个术语数组。然后,对于每个术语,我们在 dash 上再次拆分,保留第一个条目。在没有破折号的术语的情况下,整个字符串将被保留。最后,我们连接回输出字符串。

String input = "aa-bb,ccdd,eeff,gg-gg,cc-gg";
int pos = 1;
String output = String.join(",", Arrays.stream(parts) 
    .map(e -> e.split("-").length >= (pos+1) ? e.split("-")[pos] : "0")
    .toArray(String[]::new));

System.out.println(output);

这输出:

bb,0,0,gg,gg

推荐阅读