2014-09-25 55 views
1

一個逗號的字符串我有一個未知的長度,看起來像這樣分裂Java中的

a ,b, c: integer; d,e :real;

我怎麼能在逗號分割這個沒有得到遵循的最後一個字和字符的字符串變量的逗號?或者有一種方法可以在逗號分隔變量後在冒號中分割變量?我來最接近的是用這種方法

// the variablesArray would contain a ,b, c in the first index 
// and d,e in the second index. 
public static String[] variables(String[]variablesArray) { 
    String variables[] = new String[variablesArray.length]; 

    for(int i = 0; i < variablesArray.length; i++){ 
     String temporary = variablesArray[i]; 
     String arr[] = temporary.split(","); 
    } 
    return variables; 
} 

當我運行這個它只返回的第一個字符數組索引

//prints [a d]

+0

你能給你想什麼輸出的例子嗎? – 2014-09-25 22:30:42

回答

0

下面這是你想要的嗎?

String[] result = s.replaceAll("\\w{2,}", "").replaceAll("[:;,]"," ").replaceAll("\\u0020+"," ").split(" "); 

Array result現在只保留單個字符。

for(String c: array) 
     System.out.println(c); 

將輸出:與測試

a 
b 
c 
d 
e 
+0

謝謝,這是我正在尋找。 – rtg27 2014-09-26 14:46:43

1

你需要破解的問題了:

  • 分割字符串在;
  • 你們每個人得到的話:
    • 分割字符串在:
    • 插入的第一部分(變量名的列表)到您的陣列。
    • 扔掉第二部分(類型信息)。

注意,這會給你的陣列{"a ,b, c", "d,e"}因爲我從你想要你的問題理解。如果您想進一步分裂,你需要這個時間,拆分這些字符串再次的。請注意,在這種情況下,您需要將數組的類型從String[]更改爲String[][]。你會得到{{"a", "b", "c"}, {"d", "e"}}

如果您還想在拆分過程中去掉空白,請在拆分字符前後添加\s*。例如:"a, b,c , d".split("\\s*,\\s*")返回{"a", "b", "c", "d"}

0

我覺得你有問題。 temporary.split(",");是一個數組,然後您將它作爲另一個數組的一部分進行了追加。那是麻煩....我的意思是:

Array 
    0 => Array 
       0 => a 
       1 => b 

所以,你應該使用:

String arr = temporary.split(","); 
+3

這不回答這個問題。 – 2014-09-25 22:38:34

+0

@DavidConrad這是怎麼回事? – SaltyHat 2014-09-25 22:41:54

+0

其實,這讓你的答案更加糟糕。一般來說,通過用完全不同的東西替換它來編輯答案不是一個好主意。 – 5gon12eder 2014-09-25 22:46:55

0

怎麼樣以下?

public static void main(String[] args) { 
    List<String> list = new ArrayList<String>(); 
    String str = "a ,b,c: integer;d,e :real;"; 
    String[] stra = str.split(";"); 
    for(String st: stra){ 
     //System.out.println(st); 
     String[] stra2 = st.split(","); 
     for(String s: stra2){ 
      System.out.println(s); 
      list.add(String.valueOf(s.charAt(0))); 
     } 
    } 
    System.out.println(list); 
} 

OP

a 
b 
c: integer 
d 
e :real 
[a, b, c, d, e] 
1

如果myString等於"a ,b, c: integer; d,e :real;"與輸出a b c d e

for (String type : myString.split(";")) { 
    String sub = type.substring(0, type.indexOf(":")); 
    for (String name : sub.split(",")) { 
    System.out.println(name); 
    } 
} 
+0

這非常有幫助。謝謝 – rtg27 2014-09-26 14:47:15

+0

@ rtg27沒問題! – westonkd 2014-09-26 15:06:17