我在Java中有一个逗号分隔的值字符串:
String s = "a,b,c,d";
我需要对其进行标记(使用逗号作为分隔符)并将其转换为Set<String>
。 StringTokenizer
是我最好的选择,还是有更有效的方式?
答案 0 :(得分:6)
如果您尝试解决一般的CSV解析设置,请注意有报价和昏迷转义处理。这就是为什么像OpenCSV这样的库存在的原因。否则你只需要像描述的hvgotcodes一样。
答案 1 :(得分:2)
尝试使用String.split(),这可能是最简单的。
String[] a = "a,b,c,d".split( "," );
Set<String> s = new HashSet( Arrays.asList( a ) );
答案 2 :(得分:2)
虽然StringTokenizer
是分割输入字符串的不错选择,但我个人更喜欢使用String.split()
。
String[] tokens = myString.split(",");
Set<String> set = new HashSet<String>(Arrays.asList(tokens));
答案 3 :(得分:1)
我会使用split
。 split
为您提供了一个数组,所以
String[] toks = s.split(",")
然后
Set<String> mySet = new HashSet<String>(Arrays.asList(toks));
答案 4 :(得分:0)
Spring Framework提供的StringUtils.commaDelimitedListToSet
完全符合您的要求。为此而拔出Spring可能有点过头了,但是如果你在一个已经包含它的框架中工作那么它是一个可以选择的选项。
答案 5 :(得分:0)
如果您只需要一个没有所有CSV规则的简单解决方案,我建议使用StringUtils.split
(而不是String.split
,因为正则表达式开销):
HashSet<String> set = new HashSet<String>(Arrays.asList(StringUtils.split(text, ',')));
如果您需要符合CSV规则的解决方案,您应该考虑使用Commons CSV