2012-04-06 17 views
2

私はDBから来る文字列を持っています。 文字列は次のようなものです: - 短いString:StringRegex Pattern to avoid:と、文字列に

ABC:def,ghi:jkl,hfh:fhgh,ahf:jasg 

、それは大きな値のために繰り返されます。

私は(2回)、スプリット機能を使ってそれを行うことができます任意の:または,なしで単語だけを取得するには、この文字列を解析し、ArrayListの

の各単語を格納する必要があるが、私は私が行うことができます正規表現を使用していることを考え出しましたそれは一度やArrayListのを取得...

それが適切results..Itが見つかっ私に試合の指標を与えてしまい、その後、私はとても論理的かつ効率的ではありませんそれを追加する必要が私に与えていませんが
String strLine="category:hello,good:bye,wel:come"; 
     Pattern titlePattern = Pattern.compile("[a-z]"); 
     Matcher titleMatcher = titlePattern.matcher(strLine); 
     int i=0; 
     while(titleMatcher.find()) 
     { 
      i=titleMatcher.start(); 
      System.out.println(strLine.charAt(i)); 
     } 

、 。

が周りの任意の方法は、あなたが一度に文字列全体を解析するために、正規表現を使用することができたとしても...

答えて

5
String strLine="category:hello,good:bye,wel:come"; 
String a[] = strLine.split("[,:]"); 
for(String s :a) 
    System.out.println(s); 
0

あり、私はそれが複数のステップでそれを分割未満読めると思います。

1

使用するJava StringTokenizer サンプル:

StringTokenizer st = new StringTokenizer(in, ":,"); 
while(st.hasMoreTokens()) 
    System.out.println(st.nextToken()); 
+0

1は、より効率的である...私は私は非常に簡単にトークンを使用することができます知っていたが、私は分割を使用すると、トークンがより効率的になると思う。.. – AngelsandDemons

+0

それ文字列の長さに依存します。文字列が非常に短い場合は分割できますが、長い場合はトークンを反復する方が良いです。トークンタイマーを使用すると、ループ中に "a :: b:c"がある場合など、空のトークンをスキップできます。 – dash1e

+0

私の文字列は短くても、非常に長くてもかまいません。文字列の形成が常に同じであることは確かです。String1:AssociatedString、String2:AssociatedStringなど.. – AngelsandDemons