HOW TO:操作定长字符串

字符串

Public Class uStringClass uString
    Private Shared gEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")

    Public Shared Property Encoding()Property Encoding() As System.Text.Encoding
        Get
            Return gEncoding
        End Get
        Set(ByVal value As System.Text.Encoding)
            gEncoding = value
        End Set
    End Property

    Public Shared Function Length()Function Length(ByVal s As String) As Integer
        Return gEncoding.GetByteCount(s)
    End Function

    Public Shared Function PadLeft()Function PadLeft(ByVal s As String, ByVal totalWidth As Integer, ByVal paddingChar As Char) As String
        Return s.PadLeft(totalWidth + s.Length - Length(s), paddingChar)
    End Function

    Public Shared Function PadLeft()Function PadLeft(ByVal s As String, ByVal totalWidth As Integer) As String
        Return s.PadLeft(totalWidth + s.Length - Length(s))
    End Function

    Public Shared Function PadRight()Function PadRight(ByVal s As String, ByVal totalWidth As Integer, ByVal paddingChar As Char) As String
        Return s.PadRight(totalWidth + s.Length - Length(s), paddingChar)
    End Function

    Public Shared Function PadRight()Function PadRight(ByVal s As String, ByVal totalWidth As Integer) As String
        Return s.PadRight(totalWidth + s.Length - Length(s))
    End Function

    Public Shared Function SubString()Function SubString(ByVal Line As String, ByVal Index As Integer, ByVal Length As Integer) As String
        Return gEncoding.GetString(gEncoding.GetBytes(Line), Index, Length)
    End Function

End Class

测试对比:

    Private Sub ToolStripButton6_Click()Sub ToolStripButton6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ToolStripButton6.Click
        Dim tmp As String = "中国China"
        Console.WriteLine(LzmTW.uString.Encoding.EncodingName)

        Console.WriteLine(LzmTW.uString.Length(tmp))
        Console.WriteLine(tmp.Length)

        Console.WriteLine(tmp.Substring(0, 2))
        Console.WriteLine(LzmTW.uString.SubString(tmp, 0, 2))

        Console.WriteLine(New String("*"c, 20))

        Console.WriteLine(LzmTW.uString.PadLeft(tmp, 20, "*"c))
        Console.WriteLine(tmp.PadLeft(20, "*"c))

        Console.WriteLine(LzmTW.uString.PadRight(tmp, 20, "*"c))
        Console.WriteLine(tmp.PadRight(20, "*"c))

        Console.WriteLine(LzmTW.uString.PadLeft(tmp, 20))
        Console.WriteLine(tmp.PadLeft(20))

        Console.WriteLine(LzmTW.uString.PadRight(tmp, 20))
        Console.WriteLine(tmp.PadRight(20))

    End Sub

时间: 2024-08-08 05:41:35

HOW TO:操作定长字符串的相关文章

定长字符串的问题

问题描述 项目目前代码dima,basstringa="123456"b=a'此时b为123456------------想要实现定长字符串自动截取功能例dimaasstringdimbasNewMicrosoft.VisualBasic.Compatibility.VB6.FixedLengthString(5)'定义长度5的字符串a="123456"b.value=a'此时b.value=12345-----但问题是这样做需要大量修改现行代码如上面的方法,需要为

用正则,从指定起始位置,在源字符串之中截取定长字符串

[代码]用正则, 从指定起始位置, 在源字符串之中截取定长字符串(含中文)[第四版] [代码]用正则, 从指定起始位置开始, 在源字符串之中截取一定长度的字符串[第四版] [代码]使用正则表达式, 从指定的起始位置开始, 在源字符串之中截取一定长度的字符串[第四次修正] [代码]使用正则表达式, 从字符串头部开始, 在源字符串之中截取一定字节长度的字符串 [代码]使用正则表达式, 从指定的起始位置开始, 在源字符串之中截取一定长度的字符串 (BTW: 中文编码很复杂也有些不合理的地方 高位是 0

使用Rope来高效处理长字符串

  前段时间看了这篇文章<Ropes:理论与实践>.这两天为了提高工作中某个系统对外接口的效率,才认真学习了一番.本质上Ropes是将字符串表示为一棵二叉树,特别适用于长字符串的处理,貌似c++ STL库中也有这么个实现.具体实现和原理还是看这篇paper.<Ropes:理论与实践>一文中给出的测试数据相当惊人,Ropes比之String和StringBuffer在append,insert,delete等操作上的效率都有一个数量级以上的差距.跑下作者给出的测试程序,其实在测试的字

定长内存池之BOOST::pool

内存池可有效降低动态申请内存的次数,减少与内核态的交互,提升系统性能,减少内存碎片,增加内存空间使用率,避免内存泄漏的可能性,这么多的优点,没有理由不在系统中使用该技术. 内存池分类: 1.              不定长内存池.典型的实现有apr_pool.obstack.优点是不需要为不同的数据类型创建不同的内存池,缺点是造成分配出的内存不能回收到池中.这是由于这种方案以session为粒度,以业务处理的层次性为设计基础. 2.             定长内存池.典型的实现有LOKI.B

Javascript 中的长字符串拼接

Javascript 中的长字符串拼接 2011-07-11 16:00 佚名 互联昂网  字符串拼接是所有程序设计语言都需要的操作.当拼接结果较长时,如何保证效率就成为一个很重要的问题. C 语言的 strcat 函数直接操作内存,效率自然最高:C++ 的 string 类是可变的,本质上也是直接操作内存,效率也不在话下:Java 的 String 类不可变,字符串拼接意味着产生新对象,因此提供了专门用于字符串拼接的 StringBuffer 类,也保证了执行效率. 在 Javascript

在SQL中获取一个长字符串中某个字符串出现次数的实现方法

以下是对在SQL中获取一个长字符串中某个字符串出现次数的实现方法进行了详细的分析介绍,需要的朋友可以参考下   在SQL中获取一个长字符串中某个字符串出现次数的实现方法 比如有个字符串: X-BGS-2010-09-15-001 我想知道其中'-'出现的次数,可以用下面的方法实现,而不需要复杂的一个个字符分析. declare @a varchar(100) set @a='X-BGS-2010-09-15-001' select len(replace(@a,'-','--'))-len(@a

c++-如何在windows下C++编程实现循环发送定长数据包?

问题描述 如何在windows下C++编程实现循环发送定长数据包? 为了对内部网络进行相关测试,所以要用C++编程实现一个循环发包程序,用QT平台进行开发,要发送的数据包都是同样大小,且大小由用户自行设置,用户设置的大小是整个数据包的大小,包括Ip头等等.所以想请问一下这个要用什么实现?rawsocket可以吗? 解决方案 http://www.cnblogs.com/shenck/p/4075141.html

byte-C#中socket通信需要将数据按包头和定长分割,如何做

问题描述 C#中socket通信需要将数据按包头和定长分割,如何做 包头是0x55,每个数据加上包头为11个byte,但是数据中也可能出现0x55,该如何分割 解决方案 一般的解决方法是两种: 1)定义转义符,对内容中的 0x55 进行转义.如将 0x55 转义成 0x54 01;则 0x54 是 0x54 00:用两个字节表示: 2)定义包头后带数据的长度,再加上包尾,最好再加上一个校验位.这样在接收到一包数据后,先按上述定义进行有效性验证. 解决方案二: 包头后面带上长度信息,按长度去截取啊

请问网站的高宽是采用定长还是采用百分比啊?

问题描述 请问网站的高宽是采用定长还是采用百分比啊? 现在网站的高宽一般有二种办法,一定是定长,一种是百分比,那么一般是采用哪种办法呢? 解决方案 看自己的网站需要吧.如果公司是做html5 app的就采用百分比,如果只有pc端还是用px好点.如果都有,建议写两套 解决方案二: 如果用百分比来限定宽度,排版大量的文字.对于那种2k 4k的显示器来说,是一种灾难.没有人愿意阅读过长的文本 解决方案三: 看具体情况.用的比较多的是960px或者1000px居中. 解决方案四: 这个肯定是要看实际的情