zoukankan      html  css  js  c++  java
  • 关于字符串截取

    字符串截取相信大家都不陌生。但是在同一个字符串中我们需要截取不同的数据,比如将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/
    本文版权归作者和博客园共同拥有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    Tarjan在图论中的应用(三)——用Tarjan来求解2-SAT
    【CodeForces】CodeForcesRound594 Div1 解题报告
    JS面向对象组件(三)--面向对象中的常用属性和方法
    JS面向对象组件(二)--Javascript原型链
    JS面向对象组件(一) ---包装对象与原型链
    JS面向对象组件(六) -- 拖拽功能以及组件的延展
    面试题目
    webstorm安装破解版
    面试题整理
    Javascript模块化编程(三):require.js的用法 (转)
  • 原文地址:https://www.cnblogs.com/mgxiaobo/p/4681979.html
Copyright © 2011-2022 走看看