我有一个这样的字符串:
"I have 2 friends: (i) ABC (ii) XYZ"
现在如何显示如下:
I have 2 friends:
(i) ABC
(ii) XYZ
我正在动态显示数据,所以我必须检查字符串是否包含:(冒号)。
我尝试过这样,string.contains(":")
但我不知道如何进一步进行?
String s = "I have 2 friends: (i) ABC (ii) XYZ";
s = s.replace(':',':\n');
s = s.replace('(','\n(');
(不是一个通用的解决方案,但假设您的“朋友列表”格式是恒定的并且冒号表示列表的存在......您可以包装在 if(s.contains(':')){ ... } 块如果需要的话)
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
您可以使用 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)));
以下将解决您的具体问题:
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 文档,了解您的所有字符串操作需求!(在 Java 中)