C#语言之“中英文混合字符串对齐”的方法【转】
参考自:(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#语言之“中英文混合字符串对齐”的方法【转】的更多相关文章
- C#语言之“中英文混合字符串对齐”的方法
参考自:(1)http://www.cnblogs.com/cnluoke/articles/1213398.html (2)http://www.cnblogs.com/sql4me/archive ...
- C#与JS实现 获取指定字节长度 中英文混合字符串 的方法
平时在作数据库插入操作时,如果用 INSERT 语句向一个varchar型字段插入内容时,有时会因为插入的内容长度超出规定的长度而报错. 尤其是插入中英文混合字符串时,SQL Server中一般中文要 ...
- PHP获取中英文混合字符串长度及截取
1.字符串长度 PHP获取中英文混合字符串长度的实现代码如下,1中文=1位,2英文=1位,可自行修改 /** * PHP获取字符串中英文混合长度 * @param $str string 字符串 * ...
- CSS截取中英文混合字符串长度
<!doctype html> <html> <head> <meta http-equiv="content-type" content ...
- 用C#截取指定长度的中英文混合字符串
很早以前写过一篇文章(用C#截取指定长度的中英文混合字符串),但是对性能没有测试,有人说我写的这个方法性能有问题,后来想,可能真会有BT之需求要求传入一个几万K甚至几M体积的字符串进来,那将会影响正则 ...
- c#的中英文混合字符串截取
public class StringHelper { public static string GetSubString(string str, int len) ...
- c#的中英文混合字符串截取 public static string SubString(string inputString, int byteLength)
/// <summary> /// c#的中英文混合字符串截取(区分中英文) /// </summary> /// <param ...
- c#的中英文混合字符串截取指定长度,startidx从0开始
//c#的中英文混合字符串截取指定长度,startidx从0开始 by gisoracle@126.com public string getStrLenB(string str, int start ...
- Lua截取utf-8编码的中英文混合字符串
参考博客:UTF8字符串在lua的截取和字数统计[转载] 需求 按字面个数来截取子字符串 函数(字符串, 开始位置, 截取长度) utf8sub(,) = 好1世界哈 utf8sub(,) = 你好1 ...
随机推荐
- NSIS Installer(被NSI脚本编译出来的target)获取命令行参数
References: http://stackoverflow.com/questions/6185982/accessing-command-line-arguments-in-nsis http ...
- Jsvc安装,配置 常规用户使用tomcat的80端口
Jsvc安装 一.下载安装包,地址如下: http://commons.apache.org/proper/commonsdaemon/download_daemon.cgi 二.安装步骤,参考链接 ...
- 【转】Android API 中文(14) —— ViewStub
用一个XML源填充view.inflate(上下文对象,资源文件Id,父窗口组一般为null): 原文网址:http://www.cnblogs.com/over140/archive/2010/10 ...
- 戴着镣铐起舞——从logo设计说起
一天中午走在路上,顺道去看了学校新媒体艺术与设计系的学生优秀作品展.看到一个logo设计时引发了我很大的兴趣,觉得设计的非常清新活泼,不过并没有拍下来,在这里不能贴图.但是logo设计大家应该都有所概 ...
- Git 2.7: 一个新的带来许多新特性和性能提升的主要版本
在2.6版本发布两个月之后,Git 2.7发布.该版本带来了许多新特性以及性能的提升. 本文选取了Git 2.7带来的主要变化: git remote支持get-url子命令,可以显示指定远端的URL ...
- ServerSocketChannel实现多Selector高并发server
参考hbase RpcServer,编写了一个简洁版多Selector server,对nio怎么用,Selector如何选择事件会有更深入的认识. client端发送消息:内容长度 + 内容,200 ...
- Eclipse+Java+OpenCV246环境搭建和代码测试
1.首先下载OpenCV2.4.6,下载的时候,选择windows版的.然后安装 2.其实安装的过程就是解压的过程,并没有什么安装向导之类的,安装完成后,我们最关心的是这个目录:opencv\buil ...
- 自定义seekbar中,thumb被覆盖掉一部分问题
- neural style论文解读
相关的代码都在Github上,请参见我的Github,https://github.com/lijingpeng/deep-learning-notes 敬请多多关注哈~~~ 概述 在艺术领域,艺术家 ...
- Entity Framework - Func引起的数据库全表查询
原文:http://www.cnblogs.com/dudu/archive/2012/04/01/enitity_framework_func.html 使用 Entity Framework 最要 ...