2011-12-27 71 views
-4

我有一個字符串,如my+*%name===is+jhon!#and&*^I$stay===in^&$#@US。我想輸出基於一串非alpha字符分割java字符串

s[0]="my" 

s[1]="+*%" 

s[2]="name" 

s[3]="===" 

s[4]="is" 

s[5]="+" 

s[6]="jhon" 

s[7]="!#" 

s[8]="and" 

s[9]="&*^" 

s[10]="I" 

s[11]="$" 

s[12]="stay" 

s[13]="===" 

請注意,它不遵循任何模式和非字母數字字符的一堆變化爲字符串將動態數據串

+3

你的問題是什麼?你寫了什麼,你有什麼問題?你有沒有試過調試你的代碼,看看它爲什麼沒有達到你的預期? – 2011-12-27 11:35:14

+1

正如@佩特所說的。 – 2011-12-27 11:38:29

+0

親愛的彼得 我試過使用拆分,但IAM無法捕捉非字符串字符串。我想要將字母數字和非數字兩種字符串都轉換爲String數組。 String s1 =「my +%name === is + jhon!#and&^ I $ stay === in ^&$#@ US」; \t String [] nowSplit = s1.split(「[^ a-zA-Z0-9]」); \t \t \t \t 爲(INT I = 0;我 srini 2011-12-27 11:41:57

回答

0

您可以使用以下方法來分割一串字母字符

void separateMyString(){ 
    String str = "my+%name===is+jhon!#and&^I$stay===in^&$#@US"; 
ArrayList<String> stringdata = new ArrayList<String>(); 
StringBuffer sb = new StringBuffer(); 
boolean isInSameString = true; 
boolean prevStringValue = Character.isLetter(str.charAt(0)); 
for(int i=0; i<str.length(); i++){ 
    isInSameString = (Character.isLetter(str.charAt(i))== prevStringValue) ?true:false; 
    if(i == (str.length() -1)){ 
     isInSameString = false; 
    } 
    prevStringValue = Character.isLetter(str.charAt(i)); 

     if(!isInSameString){ 
      if(i == (str.length() -1)){ 
       sb.append(str.charAt(i)); 
       } 
      stringdata.add(sb.toString()); 
     sb = new StringBuffer(); 
     } 

     sb.append(str.charAt(i)); 

} 
System.out.println("~~~"+stringdata); 
} 

輸出= ~~~[my, +%, name, ===, is, +, jhon, !#, and, &^, I, $, stay, ===, in, ^&$#@, US]

+0

親愛的Sunil 感謝您的寶貴意見,但上述代碼中有一個小問題。如果你注意到,最後一個值「US」沒有進入輸出。最後一部分沒有被添加到列表 – srini 2011-12-27 13:03:39

+0

現在檢查我的答案。它給你相同的輸出,只要你想 – 2011-12-27 13:46:27

+0

非常感謝sunil。它根據需要幫助我 – srini 2011-12-27 13:55:33