java - 按条件拆分和配对子字符串
问题描述
我有一个这样的字符串:"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
推荐阅读
- javascript - 如何使用 CSS 或 Javascript 创建选取框
- sql - 在 T-SQL 中使用 Window 函数计算类别列
- node.js - 未捕获的 ReferenceError: __webpack_dev_server_client__ 未定义
- c++ - 不同类的构造函数重载解析
- hyperlink - 如何在招摇文档中链接和引用自我?
- stripe-payments - 如何在条带元素中填充已保存的卡值?
- ruby - Cromedriver `driver.manage.logs.get(:browser)` 在 chromedriver 75.0.3770.8 上失败
- python-3.6 - 运行 python xlwings 库并失败 COMRetryObjectWrapper(DispatchEx('Excel.Application'))
- react-native - 在显示未处理的承诺拒绝时反应未定义的本机导航
- c# - 如何获取传递给我的函数的参数名称?