java - 按条件拆分和配对子字符串

标签 java string split substring

我有这样一个字符串:"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];
}

最佳答案

这是一个使用流的 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

关于java - 按条件拆分和配对子字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56161733/

相关文章:

php - 数组元素是否包含子字符串?

c# - 在 C# 中比较字符串

java - 我不确定为什么要为 codechef 获取 TLE

使用参数构造函数实现的 Java 内部类直接?

java - 无法在 Glassfish 上部署的应用程序中发送电子邮件

string - Instr 函数无法检测到字符串中的单词

ruby - 通过 split() 将空字符串转换为 nil

java - Java 中简单例份验证系统的协助

javascript - String split 返回一个元素比预期多的数组(空元素)

java - 将来自 AVPacket : problems with output buffers 的字节数据提供给 MediaCodec