2016-12-13 9 views
0

文字列がコンマで区切られてペアになっています。しかし、常にコンマで区切りたいとは限りません。なぜなら、入力に必ず1つのカンマがあるわけではないからです。たとえば、文字列は、区切り文字で文字列を分割して保持するのが難しい

(http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b 
,http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6,file:///tmp/foo/bar/p,d,f.pdf) 

すべて1行で読み込まれます。この場合、私は、hで分割したいだけで、文字列の他の部分は分割しません。基本的に分割後の文字列は次のようになります。

http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b 

http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6 

file:///tmp/foo/bar/p,d,f.pdf 

最初の文字列のコンマの順序を維持します。 (私はかっこを取り除きます)。私はthisのスタックオーバーフローの問題を見てきましたが、役立つが、この文字列を正しく分割していない。これはJavaにあります。どんな助けもありがとうございます。

答えて

5

正規表現を使って分割することができます。下記のコードスニペットをご覧ください。

String str = "(http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b,http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6)"; 
String[] strArr = str.split("(,(?=http))"); 

お客様の要件に応じて可能なすべての値の配列を持ちます。

+0

これは正しく、適応可能です。 –

+0

@Nickありがとう:))。 – SachinSarawgi

+0

@SachinSarawgiはそれを正解とマークすることがありますか? :-) – rob

1

「http」で分割してから再追加します。

擬コード

String input = "http://www.wolframalpha.com/input/?i=103%2F30+%3D+4a-3b,+71%2F60+%3D+a+%2B+b 
,http://www.wolframalpha.com/input/?i=x%5E2%2B5x%2B6" 

List<String> split = input.split('http'); 
List<String> finalList = new ArrayList<String>(); 

for(String fixup in split) 
{ 
    finalList.put("http" + fixup); 
} 

最終の2つのURLを含むべきです。

+0

また、末尾のカンマを切り捨てる必要があります – Freiheit

+0

URLに「http:」(プロトコルの部分)がない場合はどうなりますか? – Yoram

+1

@Yoram - http部分が欠落していて、URL部分でない場合。与えられた例に基づいて、私はこれがコンマで区切られたURLのリストであり、URLにカンマを含むかもしれないと仮定しています。コンマを含む可能性のあるコンマ区切りのリストであれば、別の解決策が必要になります。 – Freiheit

関連する問題