关于字符串截取
字符串截取相信大家都不陌生。但是在同一个字符串中我们需要截取不同的数据,比如将text文本中的数据转换成表格的时候
这些数据中可能包含中文等。
这个时候如果你用string.Length()你会发现等长度的字符串中只要中文的数量不同,获取的字符串长度就会不同。
一下是代码:
/// <summary> /// 截取字符串 /// </summary> /// <param name="strline">被截取的字符串</param> /// <param name="dt">填充的表</param> /// <param name="weight">截取的長度</param> private void getDataToDataTable(string strline,DataTable dt,int[] weight) { DataRow dr=dt.NewRow(); int sum=0; int count = 0; ArrayList num = new ArrayList(); char[] temp = strline.ToCharArray(); for (int i = 0; i < temp.Length; i++) { if (((int)temp[i])>255) //大于255的都是汉字或者特殊字符 { num.Add(i); } } for (int i = 0; i < dt.Columns.Count; i++) { count = 0; for (int y = 0; y < num.Count; y++) { if (Convert.ToInt32(num[y])>=sum&&Convert.ToInt32(num[y])<=sum+weight[i]) { count++; } } dr[i]=strline.Substring(sum,weight[i]-count); sum+=weight[i]-count; } }
这样就排除了中文字符占位的问题。
在计算整体长度时,中文字符是占了两个字符的位置,但是在获取字符串长度时(string.length)中文字符只计算一个字符长度,这样就产生了位置偏差。
在截取的过程中,我们先找到所截取下来的字符串中所包含的中文字符。这样就知道减少截取的长度。
作者:不再奢望
出处:http://www.cnblogs.com/mgxiaobo/
本文版权归作者和博客园共同拥有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接,否则保留追究法律责任的权利。