gpt4 book ai didi

java - 使用流将字符串转换为两个字符串

转载 作者:行者123 更新时间:2023-12-04 17:24:03 24 4
gpt4 key购买 nike

我有一个字符串如下,

String str = "ID1_RELID1, ID2_RELID2,ID3_RELID3";

我想把它转换成两个字符串,如下所示,

String ids = "'ID1','ID2','ID3'";
String relids = "'RELID1','RELID2','RELID3'";

即用 _ 分割每个值并用逗号连接。

我试过下面的代码,

String str = "ID1_RELID!, ID2_RELID2,ID3_RELID3";
Map<String, String> map = Arrays.stream(str.split(","))
.collect(toMap(e -> e.split("_")[0], e -> e.split("_")[1]));
String ids = map.keySet().stream().map(e -> "'" + e + "'").collect(joining(","));
String relids = map.values().stream().map(e -> "'" + e + "'").collect(joining(","));

它工作正常,但我们可以在尽可能少的迭代中完成它吗??

最佳答案

这是一个有点离题的答案,因为根据问题标题,必须使用此处不包含的“流”。但是,这种方法快速且内存友好,因为不需要为临时数组或映射预留内存。

String str = "ID1_RELID1,ID2_RELID2,ID3_RELID3";
StringTokenizer tok = new StringTokenizer(str, ",_");
StringBuilder[] sbs = new StringBuilder[] {new StringBuilder(),new StringBuilder()};
for(int i = 0; tok.hasMoreTokens(); i++) {
sbs[i%2].append(i > 1 ? ",'" : "'").append(tok.nextToken()).append("'");
}
String ids = sbs[0].toString();
String relids = sbs[1].toString();

关于java - 使用流将字符串转换为两个字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59076034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com