用java流探索读取和转换字符串的格式

soat7uwm  于 2021-06-30  发布在  Java
关注(0)|答案(2)|浏览(282)

**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。

20天前关门了。
改进这个问题
我正在尝试用java streams读取字符串列表,将列表拆分为如下所示的格式,例如:这是我的输入字符串-

[APPLE, MANGO]

我正在尝试将上述数据转换成这种格式

('APPLE', 'MANGO')

尝试使用java流来转换它,代码如下

String.join(",", list.stream().map(item ->   "'"+item+"'").collect(Collectors.toList()));

我得到的结果如下

('APPLE, MANGO')

但我期待着

('APPLE', 'MANGO')

有人能纠正我的java代码以获得以上所需的格式吗?
这个问题的背景是
尝试创建sql查询,如
从test\u表中选择*id in('apple','mango'))
其中as in子句参数是 ArrayList<String>(); 但是用我的代码我可以把 Select * from TEST_TABLE where ID IN ('APPLE, MANGO')) in子句格式不正确,缺少'

k3fezbri

k3fezbri1#

也许你可以这样做:

String.format("(%s)", list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));

编辑时间:

String.format("%s)", list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));

另一次编辑:
有了这些附加信息,这就是您需要的:

String query = "Select * from TEST_TABLE where ID IN (%s)"

query = String.format(query, list.stream().map(s -> String.format("'%s'", s)).collect(Collectors.joining(",")));

System.out.println(query);
w6mmgewl

w6mmgewl2#

尝试以下操作:

List<String> list = List.of("APPLE", "MANGO");
String sql = "Select * from TEST_TABLE where ID IN";

String params = list.stream().map(s -> "'" + s + "'")
                        .collect(Collectors.joining(",", "(", ")"));

sql = sql + params;
System.out.println(sql);

我不知道您预期输出中的第二个右大括号是打字错误还是正确的。如果你需要第二个大括号,就把它加在上面。

相关问题