2016-08-22 277 views
9

假设我有一个字符串列表。如何自动添加双引号,将字符串列表转换为逗号分隔值

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

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

"one, two, three" 

而我需要的输出

"one","two","three" 

我们不喜欢用番石榴实用程序,该项目是不处于活动状态。

可以通过Apache Commons工具吗?

如何通过实用程序来实现这一点,而不是写我自己的逻辑来做到这一点?

+0

在这种情况下,“写自己的逻辑”是实现目标的最快方式。它只有3行... – Henry

+0

你忘了告诉_why_你想用这种方式写下来的字符串。您是否需要生成Java代码,JavaScript代码或CSV文件? –

+1

我需要通过他们在一个蒙戈DB查询在运营商 – Kathiresa

回答

5

只能与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); 

输出,

"one", "two", "three" 

我需要通过ŧ在运营商

使用下摆在蒙戈DB查询时,$为mongodb查询,你不需要建立这种方式,特别是在$in情况下,你可以查询以下方式文件,

BasicDBObject yourInQuery = new BasicDBObject(); 
yourInQuery.put("in_column", new BasicDBObject("$in", yourList)); 
DBCursor cursor = collection.find(yourInQuery); 

请阅读更多关于这个在下面的链接,

+0

当列表包含更多字符串时,这不是一个昂贵的操作吗? – Kathiresa

+0

@Kathiresa是的,唯一的_extra_操作是用''''将包含的字符串包裹起来,在第一步中你将有'一个','两个','三个',在第二步中你只需要用' “'。 –

+1

非常感谢,它解决了这个问题。两者都有很好的清晰度..好的一个TASK ... – Kathiresa

0

只需使用join

文档例如:

String message = String.join("-", "Java", "is", "cool"); 
// message returned is: "Java-is-cool" 

你可以这样做:

List<String> list = Arrays.asList("one", "two", "three"); 
res = String.join(",", list).replaceAll("([^,]+)", "\"$1\""); 

replaceAll接受捕捉一切,这不是 “” 正则表达式(您分隔符),并用双引号包围它。

如果您的输入包含逗号,则可以先对arraylist进行迭代并向每个元素添加引号,然后使用join

+0

所需的输出使用$时: '“一”,“二”,“三”' – emotionlessbananas

+0

@AsteriskNinja我编辑 – Maroun

+0

我想'regex'可以玩一些这里的重要部分 – emotionlessbananas

2
String joined = s.stream() 
    .map(plain -> '"' + StringEscapeUtils.escapeJava(plain) + '"') 
    .collect(Collectors.joining(", ")); 

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

你必须自己决定使用哪个转义函数。如果你正在生成一个CSV文件,你应该使用一些CsvWriter类。

+2

我需要在使用$ in操作符时在mongo数据库查询中传递它们 – Kathiresa

+1

mongodb是否有查询参数?这看起来像一种气味。 –

+0

请参阅此JB Nizet - https://docs.mongodb.com/manual/reference/operator/query/in/ – Kathiresa

相关问题