首页 新闻 搜索 专区 学院

实现字符串分割

0
悬赏园豆:50 [已解决问题] 解决于 2012-03-21 17:28

要求不使用String的split函数完成分割字符串功能

已给出方法:

  String[] splitString(String str,char sep)

yksnow的主页 yksnow | 初学一级 | 园豆:121
提问于:2011-08-14 08:30
< >
分享
最佳答案
0
1 public static string[] splitString(string str, char sep)
2 {
3 List<int> indexList = new List<int>();
4 indexList.Add(0);
5 for (int i = 0; i < str.Length; i++)
6 {
7 if (str[i] == sep)
8 {
9 indexList.Add(i);
10 }
11 }
12 indexList.Add(str.Length - 1);
13 string[] ss = new string[indexList.Count - 1];
14 for (int i = 0; i < ss.Length; i++)
15 {
16 if (indexList[i] == indexList[i + 1])
17 {
18 ss[i] = string.Empty;
19 }
20 else
21 {
22 ss[i] = str.Substring(indexList[i] + 1, indexList[i + 1] - indexList[i] - 1);
23 }
24 }
25 return ss;
26 }

主要原理就是先把对应字符的索引位置找出来,再根据索引位置提取字符串

还有一种方法,可以直接在第一个循环中通过对比一个个字符,不相符就追加,相符就切割,但这样涉及大量连接字符串的操作

收获园豆:25
无泪之魂 | 菜鸟二级 |园豆:287 | 2011-08-14 10:33
其他回答(2)
0

怎么分到java里面了?自己想办法写一个不就行了?

顾晓北 | 园豆:10418 (专家六级) | 2011-08-14 19:02
0

String[] splitString(String str,char sep){

  ArrayList<String> l =new ArrayList<String>();

  int n;

  while((n=str.indexOf(sep))>=0){

    String pStr=null;

    pStr=str.substring(0,n);

    if(pStr!=null && !pStr.equals(""))

      l.add(pStr);

    str=str.substring(n+1,str.length());

  }

  if(str!=null && !str.equals(""))

     l.add(str);

  String s[] = new String[l.size()];

  l.toArray(s);

  return s;

}

收获园豆:25
如是然 | 园豆:226 (菜鸟二级) | 2011-09-02 20:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册