我要将一串中英文、数字、符号混合的字符串按照长度拆分成一个数组
长度信息我已经保存在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(); 这样的话,如果出现汉字会出现问题,但是我不知道该怎么修改谢谢,谢谢大哥们,帮忙啊
长度信息我已经保存在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(); 这样的话,如果出现汉字会出现问题,但是我不知道该怎么修改谢谢,谢谢大哥们,帮忙啊
解决方案 »
- VS2010 C# 函数自动注释问题
- string 后最[]代表什么意思
- c# 中 “=>“ 是什么含义?
- 在窗体上点击检查框时激发CheckedChanged事件,但是在窗体的load事件中执行代码“checkBox1.Checked = true;”也会自动激发检查框的CheckedChanged事件,这是我所不希望的,如何避免自动激发检查框的Checked
- 如何不在page_Load中注册Button的Attribute属性实现return confirm
- C#收发邮件有几种方法
- C# 数据分辨率处理
- 请问下,WINFORM标题栏如何调整大小
- 请问如何判断OleDbDataReader、DataTable中是否包含某个字段?
- [自定义控件!!]请问如何制做成如:PrintDialog, 这种控件拖到FORM里时,单独显示在下边的控件区域
- c#中类型转换的问题!
- C#根据数据库数据绘制曲线图的问题
s = "iam方方方";
int len = s.Length;//will output as 6
byte[] sarr = System.Text.Encoding.Default.GetBytes(s);
len = sarr.Length;//will output as 3+3*2=9还是要根据不同内容的不同长度来处理
012 3 4 5
应该是这样的,所以应该是3
"iam方方方"
3 2 4 -----------按长度计算拆出来是 "iam" "方" "方方"
怎么都喜欢用占字节数阿,这个方法没法区别出英语外语言的符号和字符的
\u03a0,这是pi的符号
//计算字符串的实际长度,一个汉字或全角字符算两个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;
}