我有一些字符串,如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]="==="
等
请注意,它不遵循任何模式,并且一堆非字母数字字符会有所不同,因为字符串将是动态数据字符串
答案 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]