获得定长字符串

        C#中的字符串是Unicode编码,length是Unicode的Char的个数。所以,假如一个字符串中中英文混杂,又想获得一个固定宽度的字符串,就比较麻烦。单纯转换成字节再截取难免会碰到半个汉字的问题。

        下面实现了这样的功能,返回固定字节长度的字符串,如果发生截断,后面补充2个或者3个“.”,根据截断点的位置决定。

/// <summary>
        /// 返回定长的字符串,如果发生截取,在后面补充两个或三个"."
        /// Author:jetz
        /// </summary>
        /// <param name="ByteLen"></param>
        /// <param name="str"></param>
        /// <returns></returns>
        static public string GetFixupString(int ByteLen,string str)
        {
            if(System.Text.Encoding.Default.GetByteCount(str)<=ByteLen)return str;

            for(int i=str.Length-1;i>0;i--)
            {
                int j=System.Text.Encoding.Default.GetByteCount(str.Substring(0,i));    //字节宽度
                if(j<=ByteLen-2)        //保证能显示".."
                {
                    return str.Substring(0,i)+new string('.',ByteLen-j);
                }
            }
            return "";
        }

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏软件开发

C语言 第六章 多重循环

一、概要 在c语言中,if,switch,for,while,do-while可以相互间多次嵌套。 if(){   for()   {     for()   ...

2185
来自专栏博客园

Core官方DI解析(4)--CallSiteRuntimeResolver

​ CallSiteRuntimeResolver类型是一个创建或获取服务实例的类型,这个类型继承了CallSiteVisitor<TArgument, TRe...

911
来自专栏林德熙的博客

Roslyn NameSyntax 的 ToString 和 ToFullString 的区别

本文告诉大家经常使用的 NameSyntax 拿到值的 ToString 和 ToFullString 方法的区别

1112
来自专栏码云1024

C#委托与事件

4006
来自专栏GreenLeaves

C# Encoding

之前做公司项目的时候,对于C#编码这块总是一知半解,所以打算通过这篇笔记对C#编码(Encoding)进行彻底的扫盲,关于编码和字符集的基础知识,请参考字符集和...

2637
来自专栏数据结构与算法

POJ 3694 Network(Tarjan求割边+LCA)

Description A network administrator manages a large network. The network consist...

3916
来自专栏程序员的SOD蜜

在C++中反射调用.NET(二) 定义数据接口 绑定委托方法 使用SOD DTO 对象 将.NET对象转换到C++结构体为何不使用序列化的问题

反射调用返回复杂对象的.NET方法 定义数据接口 上一篇在C++中反射调用.NET(一)中,我们简单的介绍了如何使用C++/CLI并且初步使用了反射调用.NET...

2157
来自专栏大内老A

通过实例模拟ASP.NET MVC的Model绑定机制:简单类型+复杂类型

总的来说,针对目标Action方法参数的Model绑定完全由组件ModelBinder来实现,在默认情况下使用的ModelBinder类型为DefaultMod...

2458
来自专栏calvin

【nodejs】让nodejs像后端mvc框架(asp.net mvc)一样处理请求--参数自动映射篇(6/8)

路由、action的扫描、发现、注册搞定之后,后来我发现在我们的action里面获取参数往往都是通过request对象来一个一个获取。同样的一行代码我们不厌其烦...

1072
来自专栏Jackson0714

项目中遇到的扩展方法-总结和分享

3457

扫码关注云+社区