1

我有一个这样的字符串:

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

现在如何显示如下:

I have 2 friends:

(i) ABC
(ii) XYZ

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

我尝试过这样,string.contains(":")但我不知道如何进一步进行?

4

4 回答 4

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

(不是一个通用的解决方案,但假设您的“朋友列表”格式是恒定的并且冒号表示列表的存在......您可以包装在 if(s.contains(':')){ ... } 块如果需要的话)

于 2013-02-22T19:37:33.367 回答
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
于 2013-02-22T19:37:10.990 回答
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)));
于 2013-02-22T19:48:28.200 回答
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 文档,了解您的所有字符串操作需求!(在 Java 中)

于 2013-02-22T19:47:48.623 回答