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

小罗马字母也可以是 n 像 (i),(ii),(iii) 等等

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 回答