♣
再问汉字的处理
我要将一串中英文、数字、符号混合的字符串按照长度拆分成一个数组
长度信息我已经保存在dataset中了
我写的是这样
//定义拆分的字符串的数组
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();
这样的话,如果出现汉字会出现问题,但是我不知道该怎么修改
谢谢,谢谢
大哥们,帮忙啊
· 网友精彩回答:
i、a、m每个都占二个byte,和方一样,也就是说 i和方在编码上都是2个byte
发两个函数给你,看对你有没有帮助!
//计算字符串的实际长度,一个汉字或全角字符算两个byte
public static int getstringlength(string param)
{
asciiencoding n = new asciiencoding();
byte[] b = n.getbytes(param);
int l = 0; // l 为字符串之实际长度
for (int i=0;i <= b.length-1;i++)
{
if (b[i] ==63) //判断是否为汉字或全脚符号
{
l++;
}
l++;
}
return l;
}
//strlen:字符串的实际长度,len:要取的字符串长度,其中一个汉字或全角字符算两个byte
public static string getsubstring(string param,int len,ref int strlen)
{
string returnstr="";
bool issub=false;
asciiencoding n = new asciiencoding();
byte[] b = n.getbytes(param);
int l = 0; // l 为字符串之实际长度
for (int i=0;i <= b.length-1;i++)
{
if (b[i] ==63) //判断是否为汉字或全脚符号
{
l++;
}
l++;
if((issub==false)&&((l==len)||((l+1)==len)))
{
returnstr=param.substring(0,i+1);
issub=true;
}
}
strlen=l;
if(returnstr=="")
{
returnstr=param;
}
return returnstr;
}
- 更多问题:
- · H.264的编解码源代码哪里有下载?
- · 如何才能让一个类在classwizard中显示出来?
- · 请问在oracle中能否在一个服务中创建多个数据库
- · 在.Net如何使用资源文件
- · fwrite函数的问题?
- · 初学C#
- · 求助:同样的DLL,同样的程序,在PB6.5下可以调用成功,但在PB9下就不行
- · 这样的问题怎么解决(50)?
- · 用过Microsoft Application Blocks的兄弟帮帮忙!!
- · 求一段存储过城啊
- · c++ 怎么显示运行程序的完整路径???
- · 如何用project中的RC文件中的图标为button 设置图标 ?
- · EXCEL中设置下拉选择框的问题
- · 电脑奇怪死机!
- · 在java中,一个窗口如何控制另一个窗口如关闭
- · 在线等,急

