参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html

(2)http://www.cnblogs.com/sql4me/archive/2009/11/16/1603996.html

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

由于某一个字段,包含有汉字和数字。而一个汉字是两位占位符的大小,如果单从字符串长度来看,一个汉字的长度为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;
}

C#语言之“中英文混合字符串对齐”的方法【转】的更多相关文章

  1. C#语言之“中英文混合字符串对齐”的方法

    参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html (2)http://www.cnblogs.com/sql4me/archive ...

  2. C#与JS实现 获取指定字节长度 中英文混合字符串 的方法

    平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错. 尤其是插入中英文混合字符串时,SQL Server中一般中文要 ...

  3. PHP获取中英文混合字符串长度及截取

    1.字符串长度 PHP获取中英文混合字符串长度的实现代码如下,1中文=1位,2英文=1位,可自行修改 /** * PHP获取字符串中英文混合长度 * @param $str string 字符串 *  ...

  4. CSS截取中英文混合字符串长度

    <!doctype html> <html> <head> <meta http-equiv="content-type" content ...

  5. 用C#截取指定长度的中英文混合字符串

    很早以前写过一篇文章(用C#截取指定长度的中英文混合字符串),但是对性能没有测试,有人说我写的这个方法性能有问题,后来想,可能真会有BT之需求要求传入一个几万K甚至几M体积的字符串进来,那将会影响正则 ...

  6. c#的中英文混合字符串截取

    public class StringHelper     {         public static string GetSubString(string str, int len)       ...

  7. c#的中英文混合字符串截取 public static string SubString(string inputString, int byteLength)

    /// <summary>        /// c#的中英文混合字符串截取(区分中英文)        /// </summary>        /// <param ...

  8. c#的中英文混合字符串截取指定长度,startidx从0开始

    //c#的中英文混合字符串截取指定长度,startidx从0开始 by gisoracle@126.com public string getStrLenB(string str, int start ...

  9. Lua截取utf-8编码的中英文混合字符串

    参考博客:UTF8字符串在lua的截取和字数统计[转载] 需求 按字面个数来截取子字符串 函数(字符串, 开始位置, 截取长度) utf8sub(,) = 好1世界哈 utf8sub(,) = 你好1 ...

随机推荐

  1. 直接修改别人jar包里面的class文件 工具:jclasslib

    出于某些原因 需要把别人jar包里面的class修改一下信息 配置文件*.properties MANIFEST.MF 这些东西可以直接用记事本打开修改 然后替换掉就OK.. 在网上游荡了半天,没有找 ...

  2. Sql 高效分页

    http://www.111cn.net/database/mysql/46350.htm http://g.kehou.com/t1032617472.html http://www.cnblogs ...

  3. js深入研究之扩展类,克隆对象,混合类(自定义的extend函数,clone函数,与augment函数)

    1.类扩展 /* EditInPlaceField类 */ /* 扩展函数 */ function extend(subClass, superClass) { var F = function() ...

  4. js深入研究之函数内的函数

    第一种 function foo() { ; function bar() { a *= ; } bar(); return a; } 第二种 function foo() { ; function ...

  5. PHP基础设计模式——工厂模式

    <?php//文件名:Factory namespace IMooc; class Factory { //工程模式 static function creatDatabase() { $db ...

  6. WPF与输入法冲突研究之二:汉字输入法会导致WPF程序的崩溃!

    如果是输入非汉字的数据信息,可以添加一下内容: xmlns:input="clr-namespace:System.Windows.Input;assembly=PresentationCo ...

  7. NetAnalyzer笔记 之 九 使用C#对HTTP数据还原

    [创建时间:2016-05-12 00:19:00] NetAnalyzer下载地址 在NetAnalyzer2016中加入了一个HTTP分析功能,很过用户对此都很感兴趣,那么今天写一下具体的实现方式 ...

  8. Team Queue(多队列技巧处理)

    Team Queue Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total ...

  9. 字典树-百度之星-Xor Sum

    Xor Sum Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包括了N个正整数,随后 Prometheu ...

  10. Android万能分辨率适应法

    (1)获取屏幕的尺寸 WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); D ...