Java中需要String Joiner帮助

时间:2017-04-14 18:57:05

标签: java

我需要String Joiners中的帮助,我想在字符串之前将To_date附加到字符串之后将其格式化。

public static StringJoiner inputDatesToQuery(
        List<FileSubmtRetrlStatus> fileSubmtRetrlStatus) {
    StringJoiner joinNames = new StringJoiner(",", "TO_DATE('", "','YYYY-MM-DD HH24:MI:SS')");   // passing comma(,) and square-brackets as delimiter   
    for (FileSubmtRetrlStatus status : fileSubmtRetrlStatus) {
        joinNames.add(status.getFileSubRetDateTime());
        }
    return joinNames;

但是输出结果如下所示..

TO_DATE('2017-04-13 11:18:16,2017-04-13 11:17:44,2017-04-13 10:16:07',
'YYYY-MM-DD HH24:MI:SS')

但它应该如下......

TO_DATE('2017-04-13 11:18:16,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-04-13 11:17:44,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-04-13 10:16:07,'YYYY-MM-DD HH24:MI:SS')

2 个答案:

答案 0 :(得分:2)

StringJoiner只生成一个输出字符串。其documentation中的示例代码为:

  

The String&#34; [George:Sally:Fred]&#34;可以如下构建:

即。它需要你StringJoiner sj = new StringJoiner(":", "[", "]"); sj.add("George").add("Sally").add("Fred"); String desiredString = sj.toString(); 的所有项目,用分隔符(在你的例子中是逗号)分隔它们,当你调用add()时,将前缀放在完整字符串的开头,后缀为at结束。

如果要使用StringJoiner,则需要为要输出的每个条目单独添加一个StringJoiner。您可能希望查看Formatter或StringBuilder。

答案 1 :(得分:0)

如果您想要输出,只需正确设置StringJoiner

String[] input = { "2017-04-13 11:18:16", "2017-04-13 11:17:44", "2017-04-13 10:16:07" };

StringJoiner joiner = new StringJoiner(",'YYYY-MM-DD HH24:MI:SS'),\nTO_DATE('",
                                       "TO_DATE('",
                                       ",'YYYY-MM-DD HH24:MI:SS')");
for (String s : input)
    joiner.add(s);
System.out.println(joiner.toString());

输出

TO_DATE('2017-04-13 11:18:16,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-04-13 11:17:44,'YYYY-MM-DD HH24:MI:SS'),
TO_DATE('2017-04-13 10:16:07,'YYYY-MM-DD HH24:MI:SS')

或者使用Streams,例如@LouisWasserman thinks you should

String[] input = { "2017-04-13 11:18:16", "2017-04-13 11:17:44", "2017-04-13 10:16:07" };

String joined = Arrays.stream(input)
                      .collect(Collectors.joining(",'YYYY-MM-DD HH24:MI:SS'),\nTO_DATE('",
                                                  "TO_DATE('",
                                                  ",'YYYY-MM-DD HH24:MI:SS')"));

System.out.println(joined);

请注意,prefix仅在第一个项之前suffix仅在最后一个项之后,并且{{1}应该是项目之间的整个文本

delimiter
到_DATE(&#39; 2017-04-13 11:18:16 ,&#39; YYYY-MM-DD HH24:MI:SS&#39;),prefix
TO_DATE(&#39; 2017-04-13 11:17:44,&#39; YYYY-MM-DD HH24:MI:SS&#39;),
TO_DATE(&#39; 2017-04-13 10:16:07 ,&#39; YYYY-MM-DD HH24:MI:SS&#39;)delimiter < / p>

<强>更新

对于不喜欢重复或使用换行符串的人,请执行以下操作:

suffix