次のコードがあるとします。
String s = "{U1,U2,U3},{U5,U7},{U4,U6,U8}";
これを下のように表示するにはどうすればよいですか?
String s1 = {U1,U2,U3};
String s2 = {U5,U7};
String s3 = {U4,U6,U8};
の組み合わせはs
、どのような形でもかまいません。s1、s2、s3 は異なる文字列です。
これが私のコードです:
public class SplitString {
public static void main(String[] args) {
String s ="{U1,U2,U3},{U5,U7},{U4,U6,U8}";
String[] splitted = s.split("},");
// add the end brace for every entry except the last
for (int i=0 ; i < splitted.length-1 ; i++) {
splitted[i]=splitted[i] + "}";
}
// print out the string array
for (int i=0; i< splitted.length ; i++) {
System.out.println("String s"+i+" = "+splitted[i]);
}
}
}
これは、2 つの文字に遭遇するたびに分割し、},
それを文字列配列「分割」に入れ、次に文字列配列をループして}
、最後を除くすべての文字の最後に a を追加します。
出力:
String s0 = {U1,U2,U3}
String s1 = {U5,U7}
String s2 = {U4,U6,U8}
次の方法を使用できます。
"},{"
例を参照してください:
public static void parse(String[] args) throws java.lang.Exception
{
String myString = "{U1,U2,U3},{U5,U7},{U4,U6,U8}";
int begin = 0;
int end = 0;
String s1;
while (end != -1){
end = myString.indexOf("},{", begin);
if ((end < myString.length()) && ((begin < end)))
s1 = myString.substring(begin, end + 1);
else
s1 = myString.substring(begin);
begin = end + 2;
System.out.println(s1);
}
}
public static void main(String... args) {
String input = "{U1,U2,U3},{U5,U7},{U4,U6,U8}";
Pattern pattern = Pattern.compile("\\{[^\\}]*\\}");
Matcher matcher = pattern.matcher(input);
while (matcher.find()) {
String s = matcher.group();
System.out.format("%s\n", s);
}
}