0

次の入力があります (11,C) (5,) (7,AB) 座標ごとに2つの部分に分割する必要があります。したがって、intarray には 11、5、7 が含まれ、文字配列には C,,AB が含まれる必要があります。

しかし、stringtokenizer を使用しようとすると、intarray には 11、5、7 が必要であり、文字配列には C,AB が必要です。

(5,) の空の部分を取得する方法はありますか? ありがとうございました。

Vector<String> points = new Vector<String> ();
String a = "(11,C) (5,) (7,AB)";
StringTokenizer st = new StringTokenizer(a, "(,)");
    while(st.hasMoreTokens()) {
        points.add(st.nextToken());
    }
}
System.out.println(points);
4

4 に答える 4

2
List <Integer> digits = new ArrayList <Integer> ();
List <String> letters = new ArrayList <String> ();
Matcher m = Pattern.compile ("\\((\\d+),(\\w*)\\)").matcher (string);
while (m.find ())
{
    digits.add (Integer.valueOf (m.group (1)));
    letters.add (m.group (2));
}
于 2013-02-06T10:39:42.000 に答える
0

生のレベルでの残忍なコーディング:

List<String> points = new ArrayList<String> ();
    String source= "(11,C) (5,) (7,AB)";
    StringTokenizer deleteLeft = new StringTokenizer(source, "(");
        while(deleteLeft.hasMoreTokens()) {
            StringTokenizer deleteRight = new StringTokenizer(deleteLeft.nextToken(), ")");
                points.add(deleteRight.nextToken());
        }
        System.out.println(points);
    }
于 2013-02-06T10:56:34.623 に答える
0
public static void main(String[] args) {
    String s = "(11,C), (5,) ,(7,AB)";
    ArrayList<String> name = new ArrayList<String>();
    ArrayList<Integer> number = new ArrayList<Integer>();

    int intIndex = 0, stringIndex = 0;
    String[] arr = s.split(",");
    for (int i = 0; i < arr.length; i++) {
        String ss = arr[i].replace("(", "");
        ss = ss.replace(")", "");
        boolean b = isNumeric(ss);
        // System.out.println( Arrays.toString(arr));
        if (b) {
            int num = Integer.valueOf(ss.trim()).intValue();
            number.add(num);
        } else
            name.add(ss);
    }

    System.out.println(name);
    System.out.println(number);

}



public static boolean isNumeric(String str) {
    try {
        double d = Double.parseDouble(str);
    } catch (NumberFormatException nfe) {
        return false;
    }
    return true;
}

これを試してください: 入力を "(11,C) (5,) (7,AB)" から "(11,C), (5,) ,​​(7,AB)" に少し変更しました。

出力:

[C,  , AB]
[11, 5, 7]
于 2013-02-06T10:53:22.490 に答える
0

こんなはずじゃ

String[] values = a.split("\\) \\(");
String[][] result = new String[values.length][2];
for (int i = 0; i < values.length; i++) {
    values[i] = values[i].replaceAll("\\(|\\)", "") + " ";
    result[i] = values[i].split("\\,");  
    System.out.println(result[i][0] + " * " + result[i][1]);
}

結果には座標ペアが含まれます。

于 2013-02-06T10:36:23.123 に答える