zoukankan      html  css  js  c++  java
  • C#语言之“中英文混合字符串对齐”的方法

    方法一:将已有字符串组织成新字符串时填充

    由于某一个字段,包含有汉字和数字。而一个汉字是两位占位符的大小,如果单从字符串长度来看,一个汉字的长度为1。假如按一个包含汉字字符串长度就等于占位符大小(如果只包含字母和数字的字符串这样计算是对的)来计算的话,一个汉字却等于一个占位(显然是错误的),这样就会出现问题了,字段就无法对齐了。因为对齐是以占位大小为标准的。

    比如:name字段,string name="中国人123";   那么name.length=6。如果以 Encoding.GetEncoding("gb2312").GetBytes(name).Length=9。假设name字段规定大小为12,不足字符串的可用空格来填充。填充Name字段的长度为12,这时就需要增加3个空格来充满这个字段,而不是6个空格。

    解决办法:string name=name+new  string(' ',12-Encoding.GetEncoding("gb2312").GetBytes(name).Length);

    ==============================================================

    方法二:扩展String.PadLeft和String.PadRight

    private string PadLeftEx(string str,int totalByteCount,char c) {             Encoding coding = Encoding.GetEncoding("gb2312");             int dcount = 0;             foreach (char ch in str.ToCharArray())             {                 if (coding.GetByteCount(ch.ToString()) == 2)                     dcount++;             }             string w = str.PadRight(totalByteCount - dcount,c);             return w; }

    private string PadRightEx(string str,int totalByteCount,char c) {             Encoding coding = Encoding.GetEncoding("gb2312");             int dcount = 0;             foreach (char ch in str.ToCharArray())             {                 if (coding.GetByteCount(ch.ToString()) == 2)                     dcount++;             }             string w = str.PadRight(totalByteCount - dcount,c);             return w; }

  • 相关阅读:
    使用VMware Workstation和Virtual Network Editor管理虚拟网络
    关于VMware虚拟机的上网问题[Workstation版本] [备用]
    verycd上的一些视频课程
    什么是HD , HDTV , BD(BluRay) , HDDVD
    Vim 统计(利用自身替换的副作用)
    zz再谈“安防IT化”
    浙江大学-英特尔嵌入式技术中心成立
    shell脚本条件测试与比较
    shell脚本特殊变量与变量子串相关知识
    Linux基础和帮助
  • 原文地址:https://www.cnblogs.com/lizhenlin/p/6242499.html
Copyright © 2011-2022 走看看