2013-02-06 78 views
0

我有以下輸入 (11,C)(5,)(7,AB) 我需要將它們分成2個部分,每個座標。 所以我intarray應該有11,5,7 和我的信陣列應該有C 13 ABJava StringTokenizer

但是當我嘗試使用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); 
+1

請問有什麼辦法..總有辦法:) –

+2

向我們展示你到目前爲止的代碼。 –

+1

你可以顯示你已有的代碼嗎? –

回答

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]); 
} 

結果將包含座標對。

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)); 
} 
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] 
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); 
    }