我正在尝试动态拆分字符串,我的字符串如下:
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,