私はこのような文字列を持っています:
"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クラスの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 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 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内)