我正在尝试动态拆分字符串,我的字符串如下:

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来检查我的String是否包含冒号(:),如果它在那里,则获得与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)等

最佳答案

也许这段代码可以帮助您:

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,

08-18 03:19