【问题标题】:Convert CSV to Set<String> in Java在 Java 中将 CSV 转换为 Set<String>
【发布时间】:2012-07-13 16:58:00
【问题描述】:

我在 Java 中有一个逗号分隔值字符串:

String s = "a,b,c,d";

我需要对其进行标记(以逗号作为分隔符)并将其转换为Set&lt;String&gt;。 StringTokenizer 是我最好的选择还是有更有效的方法?

【问题讨论】:

标签: java tokenize


【解决方案1】:

如果您尝试解决一般的 CSV 解析设置,请注意要处理引号和逗号转义。这就是为什么像OpenCSV 这样的库存在的原因。否则,您只需要按照 hvgotcodes 所述进行操作即可。

【讨论】:

    【解决方案2】:

    试试 String.split(),这可能是最简单的。

        String[] a = "a,b,c,d".split( "," );
        Set<String> s = new HashSet( Arrays.asList( a ) );
    

    【讨论】:

      【解决方案3】:

      虽然StringTokenizer 是拆分输入字符串的好选择,但我个人更喜欢使用String.split()。

      String[] tokens = myString.split(",");
      Set<String> set = new HashSet<String>(Arrays.asList(tokens));
      

      【讨论】:

        【解决方案4】:

        我会使用split。 split 给你一个数组,所以

        String[] toks = s.split(",")

        然后

        Set&lt;String&gt; mySet = new HashSet&lt;String&gt;(Arrays.asList(toks));

        【讨论】:

          【解决方案5】:

          Spring Framework 提供的 StringUtils.commaDelimitedListToSet 正是您所追求的。仅仅为此而引入 Spring 可能有点矫枉过正,但如果您在一个已经包含它的框架中工作,那么这是一个需要注意的选项。

          【讨论】:

            【解决方案6】:

            如果您只需要一个没有所有 CSV 规则的简单解决方案,我会推荐 StringUtils.split(而不是 String.split,因为正则表达式开销):

            HashSet<String> set = new HashSet<String>(Arrays.asList(StringUtils.split(text, ',')));
            

            如果您需要一个符合 CSV 规则的解决方案,您应该考虑在使用中Commons CSV

            【讨论】:

              猜你喜欢
              • 2011-08-22
              • 1970-01-01
              • 2021-04-26
              • 2015-11-17
              • 1970-01-01
              • 2021-06-22
              • 1970-01-01
              • 2022-01-05
              • 1970-01-01
              相关资源
              最近更新 更多