4

Java にカンマ区切りの値文字列があります。

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

それを (区切り文字としてコンマを使用して) トークン化し、. に変換する必要がありSet<String>ます。StringTokenizer私の最善の策ですか、それともより効率的な方法がありますか?

4

6 に答える 6

7

一般的に CSV 解析を解決しようとする場合は、処理する引用符とカンマ エスケープがあることに注意してください。これが、OpenCSVのようなライブラリが存在する理由です。それ以外の場合は、hvgotcodes で説明されているとおりにする必要があります。

于 2012-07-13T17:06:48.207 に答える
3

String.split() を試してみてください。おそらくこれが最も簡単です。

    String[] a = "a,b,c,d".split( "," );
    Set<String> s = new HashSet( Arrays.asList( a ) );
于 2012-07-13T17:01:01.827 に答える
2

StringTokenizer入力文字列を分割するための良いオプションですが、個人的にはString.split().

String[] tokens = myString.split(",");
Set<String> set = new HashSet<String>(Arrays.asList(tokens));
于 2012-07-13T17:03:13.540 に答える
1

私は使用しますsplitsplitあなたに配列を与えるので、

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

その後

Set<String> mySet = new HashSet<String>(Arrays.asList(toks));

于 2012-07-13T17:01:29.190 に答える
0

Spring Frameworkは、StringUtils.commaDelimitedListToSetまさにあなたが求めていることを提供します。このためだけに Spring を取り込むのはおそらくやり過ぎですが、Spring が既に含まれているフレームワークで作業している場合は、注意が必要なオプションです。

于 2012-07-13T17:12:44.440 に答える
0

すべての CSV ルールを使用せずに単純なソリューションが必要な場合は、StringUtils.split(代わりString.splitに正規表現のオーバーヘッドのため)をお勧めします。

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

CSV ルールに従うソリューションが必要な場合は、Commons CSVの使用を検討する必要があります。

于 2012-07-13T17:21:11.443 に答える