基于一堆非alpha字符拆分java字符串

时间:2011-12-27 11:32:09

标签: java

我有一些字符串,如my+*%name===is+jhon!#and&*^I$stay===in^&$#@US。我希望输出为

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]="==="

请注意,它不遵循任何模式,并且一堆非字母数字字符会有所不同,因为字符串将是动态数据字符串

1 个答案:

答案 0 :(得分: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);
}

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