如何自动添加双引号,将字符串列表转换为逗号分隔值

Kat*_*esa 9 java

假设我有一个字符串列表.

List<String> s = new ArrayList<>();
s.add("one");
s.add("two");
s.add("three");
Run Code Online (Sandbox Code Playgroud)

当我使用StringUtils.join(",", s)它时,给我结果

"one, two, three"
Run Code Online (Sandbox Code Playgroud)

而我需要输出为

"one","two","three"
Run Code Online (Sandbox Code Playgroud)

我们不喜欢使用Guava实用程序,因为项目不处于活动状态.

是否可以通过Apache Commons实用程序?

如何通过实用程序实现这一点,而不是编写自己的逻辑来做同样的事情?

Cod*_*roc 7

你可以分两步完成StringUtils,

List<String> s = new ArrayList<>();
s.add("one");
s.add("two");
s.add("three");

String step1 = StringUtils.join(s, "\", \"");// Join with ", "
String step2 = StringUtils.wrap(step1, "\"");// Wrap step1 with "

System.out.println(step2);
Run Code Online (Sandbox Code Playgroud)

输出,

"one", "two", "three"
Run Code Online (Sandbox Code Playgroud)

我需要在使用$ in运算符时在mongo数据库查询中传递它们

对于mongodb查询,您不需要以这种方式构建它,特别是在$in您可以按以下方式查询文档的情况下,

BasicDBObject yourInQuery = new BasicDBObject();
yourInQuery.put("in_column", new BasicDBObject("$in", yourList));
DBCursor cursor = collection.find(yourInQuery);
Run Code Online (Sandbox Code Playgroud)

请在以下链接中阅读更多相关信息,


Rol*_*lig 5

String joined = s.stream()
    .map(plain -> '"' + StringEscapeUtils.escapeJava(plain) + '"')
    .collect(Collectors.joining(", "));
Run Code Online (Sandbox Code Playgroud)

这个想法是首先将每个字符串转换为正确引用的表示,然后加入它们。

您必须自己决定使用哪个转义函数。以防万一你生成一个 CSV 文件,你真的应该使用一些CsvWriter类。

  • 使用 $in 运算符时,我需要在 mongo DB 查询中传递它们 (2认同)
  • mongodb 没有查询参数吗?那看起来像一种气味。 (2认同)