使用读取和转换字符串格式所需的Java流进行探索



我正在尝试Java流读取字符串列表,将列表拆分为如下所示的格式例如:这是在我的输入字符串-中

[APPLE, MANGO]

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

('APPLE', 'MANGO')

尝试使用java流进行转换,使用以下代码

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

我得到的输出低于

('APPLE, MANGO')

但我期待着像一样

('APPLE', 'MANGO')

有人能纠正我的java代码以获得以上所需的格式吗?

此问题的上下文是

尝试创建类似的SQL查询

从TEST_TABLE中选择*,其中ID IN('APPLE','MANGO'((

其中,as IN STRUCTION参数是ArrayList<String>();

但用我的代码,我得到了

Select * from TEST_TABLE where ID IN ('APPLE, MANGO'))

IN子句格式不正确,缺少'

尝试以下操作:

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);

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

也许你可以做一些类似的事情:

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);

最新更新