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