我有一个问题困扰了很久,也提了好几个问题,但是都没有人能够解决,我很着急,能帮帮我吗?问题是
我要将一串中英文、数字、符号混合的字符串按照长度拆分成一个数组
长度信息我已经保存在dataset中了,这里的长度是一个汉字或全角字符算两个Byte的比如说  
"iam方方方"
长度信息是3、2、4,那么拆出来是  "iam" "方" "方方" 然后保存到数组我写的是这样的
 
//定义拆分的字符串的数组  保存的是长度信息
string[] arrayData=new string[DataSet_XML.Tables[Len].Rows.Count];
            
int Startpoint = 0;
  //拆分成数组
  for (int i=0;i<DataSet_XML.Tables[Len].Rows.Count;i++)
  {
    //拆分每个字段到数组
    DataRow_Len = DataSet_XML.Tables[Len].Rows[i];
    string subString1 = String1.Substring(Startpoint,Convert.ToInt32(DataRow_Len["Len"]));
    Startpoint += Convert.ToInt32(DataRow_Len["Len"]);
    //去掉首尾空格
    arrayData[i]=subString1.Trim();这样的话,如果出现汉字或全角字符会出现问题,但是我不知道该怎么修改

解决方案 »

  1.   

    先用GB2312解码,再切分,再转换成字符串。解码:
    System.Text.Encoding.GetEncoding( "GB2312" ).GetBytes转换成字符串
    System.Text.Encoding.GetEncoding( "GB2312" ).GetString切分就你自己写了
      

  2.   

    解码:
    System.Text.Encoding.GetEncoding( "GB2312" ).GetBytes这样就得到了一个byte数组,汉字在里面是占用两个元素的。然后你再想办法把这个数组进行切分,例如:byte[][] resault;//结果集int j = 0;
    for ( int i = 0; i < split.Length; i++ )//从切分信息数组中取出切分信息
    {
      resault[i] = new byte[ split[i] ];//将resault[i]设定为指定切分长度的数组。
      int k = 0;//初始化变量k
      for ( ; j < byes.Length; j++ )//循环从原字符串转换的数组中获取字符。
      {
        if ( k == split[i] )//如果已经达到这一次切分的长度
          break;    resault[i][k] = bytes[j];
      }
    }如果加上注释一起看还是难以理解上面的程序,就要加强数据结构方面的知识了。