//在不使用正则表达式的方法下。实现了多空格(可以是单空格)切割的方法。将字符串转换为字符数组- public static String[] strToArray(String str) {
- //设置一个变量记录空格出现的索引值
- int index = 0;
- //设置一个数组,因为长度不确定,将它设置为str的长度
- String []arr_str = new String[str.length()];
- //arr_str的长度不确定,为了将不需要的null去掉,所以设置了arr_str2数组
- String []arr_str2 =null;
- //为了将数据存储到arr_str中,定义一个变量
- int p = 0;
- while(((index = str.indexOf(" ")))!=-1){ //当索引值不是空的时候循环(字符串中有空格)
- if(index == 0){
- /*
- * 如果得到的字串中第一个字符还是空格,就接着更新
- 空20空空29空8 index = 0,就从1开始取后边的所有的数。
- 得到20空空29空8 index = 3!=0.
- 将20取出来放到一个数组里去,并且将去除20后的字符串更新
-
- */
- str = str.substring(1, str.length());
- }else{
- arr_str[p++] = str.substring(0,index);
- str = str.substring(index+1, str.length());
- }
-
- }
- //到这里肯定还有一个数,直接添加到数组中去
- //if (str!=null) {
- arr_str[p] = str;
- //}
-
- int mark = 0; //得到了一个含有多个null的数组。
- for (int i = 0; i < arr_str.length; i++) {
- //将第一次出现null元素的位置记录,这个位置就是数组所需要的实际长度
- //跳出循环。得到最小长度
- if(arr_str[i] == null){
- mark = i;
- break;
- }
- }
- arr_str2 = new String[mark]; //长度确定了,就可以直接new对象了
- for(int i = 0;i<mark;i++){
- arr_str2[i] = arr_str[i];
- }
-
- //String arr_str[] = str.split(" ");
- return arr_str2;
- }
复制代码 |