1

次のコードがあるとします。

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 は異なる文字列です。

4

5 に答える 5

2

これが私のコードです:

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}
于 2013-04-03T05:42:07.450 に答える
2

次の方法を使用できます。

を参照してください:

  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);
     }
  }
于 2013-04-03T05:15:40.927 に答える
0
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);
    }
}
于 2013-04-03T09:18:25.307 に答える