ArrayList al = new ArrayList();
            al.Add("c");
            al.Add("i");
            al.Add("sh");
            al.Add("ou");
            al.Add("s");
            al.Add("iaw");
            al.Add("ian");
有这样一个数组,如果用户在textBox里输入cishou sian,要安照al里面的字母进行分割,并把分割出来的字符存到另一个数组里,应该怎么做?就是分割为c i sh ou s ian,这几个字符要存到一个数组里

解决方案 »

  1.   

    string s=textBox1.Text;
    string str="";
    List<string> lst=new List<string>();
    for(int i=0;i<s.Length;i++)
    {
      if(!al.Contains(s[i]))
           str+=s[i];
      else 
       {
    lst.Add(str);
    str="";
    }
    }
      

  2.   

    把1个字母的拼音放在一堆,两个字母的拼音放在一堆,三个字母的拼音放在一堆;
    然后对输入的拼音--text进行循环遍历:
    这个遍历还应该要符合拼音的拼法,比如前两个字母有可能是sh、ch……  最开始不能单单从1个字母的拼音开始遍历……所有拼音的拼法条件筛选完之后,对text进行一次穷举,将筛选出来的结果放到一个数组中。
    筛选条件很多,容易漏条件的!楼主小心了……
    嗬嗬嗬……
      

  3.   

    string str=23,4,5,2,6,4,6;
    string[] ret=str.Split(new char[]{','},StringSplitOptions.RemoveEmptyEntries);
      

  4.   

    要先把声母韵母分开,依次进行匹配
    还要考虑二义性,有些字母同时可作为声亩或韵母,例如 changan 是长安还是产感?
      

  5.   

    首先你这种需求有以下特点:1.al中的string成员中长度大的具有优先分割权,即sh要比s提前提取出来,iaw比i提前提取出来,ian比i提前提取出来
    2.给定的要操作的字符串(除空格),如string str="cishou sian",其中的字符必须全部存在于al中。鉴于以上特点,需要进行如下处理过程:1.将al按照string成员的length由大到小重新排序
    2.定义新的arraylist ret用于保存分割后的字符串
    3.遍历al中成员,将给定的字符串str用Contains()方法判断al[i]是否存在,存在则将其去掉,同时执行ret.Add(al[i].ToString())方法保存提取出来的字符串。完整代码如下:ArrayList al = new ArrayList();
    al.Add("c");
    al.Add("i");
    al.Add("sh");
    al.Add("ou");
    al.Add("s");
    al.Add("iaw");
    al.Add("ian"); //对al成员字符串长度进行重新排序,长度由大到小
    for (int i = 0; i < al.Count; i++)
    {
       for (int j = i; j < al.Count; j++)
       {
          if (al[i].ToString().Length < al[j].ToString().Length)
          {
              string temp = al[i].ToString();
              al[i] = al[j];
              al[j] = temp;
           }
       }
    }
    //给定要处理的字符串
    string str = "cishou sian";
    //定义ret来保存分割后的字符串
    ArrayList ret = new ArrayList();
    //遍历al来匹配,提取,保存
    for (int i = 0; i < al.Count; i++)
    {
        if (str.Contains(al[i].ToString()))
        {
            str = str.Replace(al[i].ToString(), "");
            ret.Add(al[i].ToString());
        }
    }//在此时ret中就是提取出来的正确结果了
      

  6.   

    ArrayList已过时,改用List<T>...
    List<string> list = new List<string>();
    list.Add("c");
    list.Add("i");
    list.Add("sh");
    list.Add("ou");
    list.Add("s");
    list.Add("iaw");
    list.Add("ian");string s = "cishou sian";List<string> result = new List<string>();foreach (string item in list)
    {
        if (s.Contains(item))
            result.Add(item);
    }
      

  7.   

    其实你这个需求有点问题...字符串"sh"包含"s"、字符串"iaw","ian"包含"i","a","ia",这会产生重复计数...