1

文字列を動的に分割しようとしています。私の文字列は次のとおりです。

I need to call 2 numbers: (i) 1234 (ii) 4567 

時々、私のデータには次のようなものも含まれる場合があります:

1st type:

I need to call 2 numbers: numbers are (i) 1234 (ii) 4567 

2nd type:

I need to call my friends: numbers are as follows(only close friends)

次のようなデータを表示する必要があります。

I need to call 2 numbers: 
(i) 1234 
(ii) 4567 

つまり、コロンの後に下ローマ字 (i) を取得して次の行に表示し、次に (ii) 下ローマ字を取得して次の行に表示する、というように続きます。

現在、regx を使用して、文字列にコロン (:) が含まれているかどうかを確認しています。存在する場合は、regx と一致するパターンを取得して表示します。

私の最初のケースでは問題なく動作しますが、言及した 2 つのタイプでは動作しません。

これは私のコードです:

if(mString.contains(":")){
                     String [] parts = mString.split (":");

                     html.append("<p>"+parts [0]+"</p>");
                     Matcher m = Pattern.compile ("\\([^)]+\\)[^(]*").matcher (parts [1]);
                     while (m.find ()) {

                         html.append("<p>"+m.group ()+"<br>");
                     }
                     html.append("</br></p>");

編集:

I need to call 2 numbers: 
    (i) 1234 // it can be alphabets also like abc
    (ii) 4567 // it can be alphabets also abc

また、下ローマ人は (i)、(ii)、(iii) などのように n にすることができます。

4

1 に答える 1

3

おそらく、このコードはあなたを助けることができます:

Pattern p = Pattern.compile("^.*:.*([0-9]{4}).*([0-9]{4}).*");
Matcher m = p.matcher("I need to call 2 numbers: (i) 1234 (ii) 4567");
if (m.find()) {
    System.out.println(m.group(1));
    System.out.println(m.group(2));
}

とにかく、いつでもサブストリングと indexOf を使用できます。

于 2013-02-22T21:16:06.980 に答える