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/
    本文版权归作者和博客园共同拥有,欢迎转载,但未经作者同意必须保留此段声明,且在页面明显位置给出原文链接,否则保留追究法律责任的权利。

  • 相关阅读:
    HTML5(一)初识HTML5
    iOS手机流量抓包rvictl
    mysql 安全模式
    DNS解析
    Git删除文件
    Git创建本地仓库并推送至远程仓库
    【python】字典/dictionary操作
    Gson解析复杂JSON字符串的两种方式
    apk安装提示:Failure [INSTALL_FAILED_DUPLICATE_PERMISSION perm=XXX]
    su、sudo、su
  • 原文地址:https://www.cnblogs.com/mgxiaobo/p/4681979.html
Copyright © 2011-2022 走看看