我有一个问题困扰了很久,也提了好几个问题,但是都没有人能够解决,我很着急,能帮帮我吗?问题是
我要将一串中英文、数字、符号混合的字符串按照长度拆分成一个数组
长度信息我已经保存在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();这样的话,如果出现汉字或全角字符会出现问题,但是我不知道该怎么修改
我要将一串中英文、数字、符号混合的字符串按照长度拆分成一个数组
长度信息我已经保存在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();这样的话,如果出现汉字或全角字符会出现问题,但是我不知道该怎么修改
System.Text.Encoding.GetEncoding( "GB2312" ).GetBytes转换成字符串
System.Text.Encoding.GetEncoding( "GB2312" ).GetString切分就你自己写了
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];
}
}如果加上注释一起看还是难以理解上面的程序,就要加强数据结构方面的知识了。