2012-12-25 205 views
0

我試圖將字符串的組成部分拆分爲數組,以便更容易地訪問它們。將字符串拆分爲數組

例如:4+5=應該變成['4','+','5','=']

編輯: - 我需要連續的數字連接在一起,並且可以忽略空格。再次感謝!

+2

[String.split()](http://docs.oracle.com/javase/1.4.2/docs/api /java/lang/String.html),夥計:) – paulsm4

+1

是你的字符串總是number-operator-number-equals還是有其他可能的字符串? – Philipp

+2

我剛剛回答了[類似問題](http://stackoverflow.com/questions/14032850/can-split-string-method-of-java-return-the-array-with-the-delimiters-as-well/ 14032866#14032866) –

回答

2

你可以用正則表達式lookaround來解決它。

String str = "10 * 10 - 40 + 100/2 = 110"; 

//but first lets remove white spaces (it will makes regex easier) 
String strWithoutSpaces=str.replaceAll("\\s+", ""); 

String[] tokens = strWithoutSpaces.split("(?<=[-+*/=])|(?=[-+*/=])"); 

for (String t:tokens) 
    System.out.print(t+","); 

輸出:

10,*,10,-,40,+,100,/,2,=,110, 
0

你可以使用toCharArray()方法

String s ="4+5="; 
    char [] stArr = s.toCharArray(); 
    for(char ss: stArr){ 
     System.out.println(ss); 
    } 

出把

4 
+ 
5 
= 
+3

這將打破'45 + 45 = 90' –

+0

將再次打破。它現在分裂爲空字符串。 –

+0

toCharArray()工作不像你提到的 – Suranga

2

您可以使用

String str = "4+5="; 
String[] tokens = str.split("(?!^)"); 
for (String s : tokens) { 
    System.out.println(s); 
} 

這將輸出

4 
+ 
5 
= 
0

你可以做這樣的事情:

public static void main(String args[]) { 
    String str = "45+5-26"; 
    String strArr[] = new String[str.length()]; 
    StringBuffer sb = new StringBuffer(); 
    int cnt = 0; 
    for (int i = 0; i < str.length(); i++) { 
     char ch = str.charAt(i); 
     if (ch != '\0') { 
      if (ch == ' ') { 
       continue; 
      } 
      if (ch >= 48 && ch <= 57) { 
       sb.append(ch); 
       continue; 
      } else { 
       strArr[cnt++] = sb.toString(); 
       sb = new StringBuffer(); 
       // sb.append(ch); 
      } 
      strArr[cnt++] = ch + ""; 
      sb = new StringBuffer(); 
     } 
    } 
    strArr[cnt++] = sb.toString(); 
    sb = new StringBuffer(); 
    System.out.println("strArray: "); 
    for (int i = 0; i < strArr.length; i++) { 
     if (strArr[i] == null) 
      break; 
     System.out.println(strArr[i]); 
    } 
} 

如果只有運營商的號碼之間的分隔符,這將是更容易得到的字符串令牌。
如果你想用逗號分隔的令牌可以如下修改:

for (int i = 0; i < strArr.length; i++) { 
     if (strArr[i] == null) 
      break; 
      // System.out.println(strArr[i]); 
     if(i!=0) 
      sbResult.append(","); 
     sbResult.append(strArr[i]); 

    } 
    System.out.println("sbResult: "+sbResult.toString());