2017-11-09 4 views
0

私はS.splitを(「;」)を使用して、7キーと値の塊とSを分割しています下のテキスト形式この希望の形式の文字列を分割する方法は?

String s = " 
key1:value1; 
key2:value2; 
key3:value3; 
key4:value4; 
key5:value5; 
key6:https://url1.com, https://url2.com; 
key7:value;"; 
Note: (the number of urls in key6 will be 1 to many and non linear) 

を持って

String keyValPair[] = s.split(";"); 
    Output will be 
    /* keyValPair[0] contains key1:value 
    keyValPair[1] contains key2:value 
    keyValPair[2] contains key3:value and 
    keyValPair[6] contains key6:https://url1.com,https://url2.com; 

今、私は再び分割鍵にしたいと値を別々に配列し、それを配列0とistの位置に格納します。

 //while looping into keyValPair[i] 
    String[] singleKeyVal[] = keyValPair[0].split(":"); 
    /*Output 
     singleKeyVal[0] will have Key1 
     singleKeyVal[1] will have Value1 
      perform some task and clear the array singlekeyVal[] 

質問が正しくKEY6を分割する方法である2番目の引数はlimit呼ばかかるan overloaded splitあり

//while looping into KeyValPair[i] 
String[] singleKeyVal[] = keyValPair[5].split(":"); //6th chunk contains : in the URL too 
/*Output 
    singleKeyVal[0] will have Key6 
    singleKeyVal[1] should contain https://url1.com,https://url2.com 
    also note that above example contains only 2 urls but it will contain urls between 1 to many urls, 
+0

分割する代わりに、indexOf( ":")を使用し、インデックスの部分文字列を使用します。 – Basu

答えて

3

サイズの配列を取得 - the second oneはあなたが最大数を指定することができますlimit引数を取りますあなたが望むグループのあなたの場合:

String[] singleKeyVal = keyValPair[5].split(":", 2); 

あなたがしたいことをする必要があります。

ps:Java命名規則を採用する必要があります(変数は小文字で始まります)。

3

がリミットパラメータは時間パターンの数を制御します結果として得られる配列の長さに影響します。

だから、一度だけの分割に

String[] SingleKeyVal[] = KeyValPair[5].split(":", 2); 

を使用し、2つのsplitの方法があります。2.

関連する問題