中英文数字混合的复合格式处理

原创 2006年06月10日 21:49:00
Author:水如烟

曾写过一个How TO:操作字长字符串,现在重新整理,使更方便些.
Public Class uString

    
Private Sub New()
    
End Sub

    
Private Shared gEncoding As System.Text.Encoding = System.Text.Encoding.GetEncoding("GB2312")

    
Public Shared 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(ByVal s As StringAs Integer
        
Return gEncoding.GetByteCount(s)
    
End Function

    
Public Shared Function PadLeft(ByVal s As StringByVal totalWidth As IntegerByVal paddingChar As CharAs String
        
Return s.PadLeft(GetValidNum(totalWidth + s.Length - Length(s)), paddingChar)
    
End Function

    
Public Shared Function PadLeft(ByVal s As StringByVal totalWidth As IntegerAs String

        
Return s.PadLeft(GetValidNum(totalWidth + s.Length - Length(s)))
    
End Function

    
Public Shared Function PadRight(ByVal s As StringByVal totalWidth As IntegerByVal paddingChar As CharAs String
        
Return s.PadRight(GetValidNum(totalWidth + s.Length - Length(s)), paddingChar)
    
End Function

    
Public Shared Function PadRight(ByVal s As StringByVal totalWidth As IntegerAs String
        
Return s.PadRight(GetValidNum(totalWidth + s.Length - Length(s)))
    
End Function

    
Public Shared Function SubString(ByVal Line As StringByVal Index As IntegerByVal Len As IntegerAs String
        
Dim num As Integer = Length(Line)
        
Return gEncoding.GetString(gEncoding.GetBytes(Line), Index, Len)
    
End Function

    
Private Shared Function GetValidNum(ByVal num As IntegerAs Integer
        
If num < 0 Then
            
Return 0
        
Else
            
Return num
        
End If
    
End Function

    
Public Shared Function Format(ByVal sformat As StringByVal arg0 As ObjectAs String
        
Return Format(sformat, New Object() {arg0})
    
End Function

    
Public Shared Function Format(ByVal sformat As StringByVal arg0 As ObjectByVal arg1 As ObjectAs String
        
Return Format(sformat, New Object() {arg0, arg1})
    
End Function

    
Public Shared Function Format(ByVal sformat As StringByVal arg0 As ObjectByVal arg1 As ObjectByVal arg2 As ObjectAs String
        
Return Format(sformat, New Object() {arg0, arg1, arg2})
    
End Function

    
Public Shared Function Format(ByVal sformat As StringByVal args As Object()) As String
        
Return myFormat(sformat, args)
    
End Function

    
Private Shared Function myFormat(ByVal sformat As StringByVal args As Object()) As String
        
Dim mysformat As String = sformat

        
'以下匹配字符串,找的是复合格式{index[,alignment][:formatString]}有alignment的完整项{}
        Dim mPattern As String = "{(/d+)([/s]*,[/s]*[-]?)(/d+)(.*?)}"
        
Dim mMatchs As System.Text.RegularExpressions.MatchCollection
        mMatchs 
= System.Text.RegularExpressions.Regex.Matches(mysformat, mPattern)

        
'处理各匹配项,重置各项长度
        For Each m As System.Text.RegularExpressions.Match In mMatchs

            
Dim s As String = m.Groups(0).Value '匹配完整项
            Dim index As Integer = Convert.ToInt32(m.Groups(1).Value) '格式索引
            Dim len As Integer = Convert.ToInt32(m.Groups(3).Value) '原固定长度

            
Dim NowLen As Integer = AligLen(len, args(index)) '现固定长度
            '以下重置固定长度
            Dim replace As String = "{${1}${2}" & NowLen.ToString & "${4}}"
            
Dim Nows As String = m.Result(replace)
            mysformat 
= mysformat.Replace(s, Nows)
        
Next

        
Return String.Format(mysformat, args)
    
End Function

    
'混合字符文本固定长度的重置
    Private Shared Function AligLen(ByVal len As IntegerByVal arg As ObjectAs Integer
        
Return len - Length(arg.ToString) + arg.ToString.Length
    
End Function
End Class

相关文章推荐

Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版(2)

我在上一篇文章中介绍了Java调用条码打印机的相关方法,但是在实际生产环境中发现了一些问题,于是在此给出解决办法。 上一个Demo存在的一些问题包括: 1.打印浓度和宽度必须在打印机控制面板设置; 2...

Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版

Java调用Zebra条码打印机打印条码、中英文数字条码混合标签,可自由控制格式和排版。...

中英文及数字混合排序

当我们显示一个列表时往往因为中文英

ElasticSearch:为中文分词器增加对英文的支持(让中文分词器可以处理中英文混合文档)

当我们使用中文分词器的时候,其实也希望它能够支持对于英文的分词。试想,任何一个存储文字的字段都有可能是中英文夹杂的。 我们的项目中使用IKAnalyzer作为中文分词器,它在处理文档过程中遇到英文...

《数字图像处理》学习笔记(四)--混合空间增强法(待修改)

这次试验问题很多,应该还是数据格式的问题,先发上来吧,放假回去先用Matlab做下,再改改。。。。。    下面对一幅人体骨骼扫描图进行混合空间增强(有点吓人)。。。我们的目标是通过图像锐化突出骨骼的...

一个hta格式的复合收益计算工具

  • 2009年03月12日 16:07
  • 919B
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中英文数字混合的复合格式处理
举报原因:
原因补充:

(最多只允许输入30个字)