冒号后获取数据并以不同的行显示

时间:2013-02-22 19:33:12

标签: java string split

我有一个像这样的字符串:

"I have 2 friends: (i) ABC (ii) XYZ"

现在如何显示:

I have 2 friends:

(i) ABC
(ii) XYZ

我正在动态显示数据,所以我必须检查字符串是否包含:(冒号)。

我试过这样string.contains(":"),但我没有得到进一步的进展?

4 个答案:

答案 0 :(得分:3)

String s = "I have 2 friends: (i) ABC (ii) XYZ";
s = s.replace(':',':\n');
s = s.replace('(','\n(');

(不是一般化的解决方案,但假设你的“朋友列表”格式是不变的,冒号表示列表的存在......你可以用if(s.contains(':')){.. 。}阻止,如果需要)

答案 1 :(得分:2)

String s = "I have 2 friends: (i) ABC (ii) XYZ";
String [] parts = s.split (":");
System.out.println (parts [0]);
System.out.println ();
Matcher m = Pattern.compile ("\\([^)]+\\)[^(]*").matcher (parts [1]);
while (m.find ()) System.out.println (m.group ());

输出是:

I have 2 friends

(i) ABC 
(ii) XYZ

答案 2 :(得分:2)

您可以使用String类的indexOf和substring方法来获得此功能。

System.out.println(str.substring(0, str.indexOf('(', 0)));
System.out.println();
System.out.println(str.substring(str.indexOf('(', 0), str.indexOf('(', str.indexOf('(', 0) + 1)));
System.out.println(str.substring(str.indexOf('(', str.indexOf('(', 0) + 1)));

答案 3 :(得分:0)

以下内容将解决您的具体问题:

String str = "I have 2 friends: (i) ABC (ii) XYZ";

int indexOfColon = str.indexOf(":");
int lastIndexOfOpenParenthesis = str.lastIndexOf("(");

String upToColon = str.substring(0, indexOfColon);
String firstListItem = str.substring(indexOfColon + 1, lastIndexOfOpenParenthesis);
String secondListItem = str.substring(lastIndexOfOpenParenthesis);

String resultingStr = upToColon + "\n\n" + firstListItem + "\n" + secondListItem;

查看java.lang.String documentation以了解所有字符串操作需求! (在Java内)