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

原创 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

Coreseek:中英文混合分词

coreseek是针对中文搜索引擎在sphinx搜索引擎上添加了中文分词功能中文分词使用的是Chih-Hao Tsai的MMSEG算法提供了分词字典,同义词及特殊词的扩展 该文主要针对分词字典的扩展...
  • yangguangmeng
  • yangguangmeng
  • 2016年06月25日 17:12
  • 1408

MMSeg4J改造,使之支持中英文数字连词

package com.qfang.util; import java.io.BufferedReader; import java.io.IOException; import java.io.P...
  • Yoara
  • Yoara
  • 2014年11月20日 11:49
  • 2306

中英文及数字混合排序

当我们显示一个列表时往往因为中文英
  • mybaby525
  • mybaby525
  • 2014年05月27日 15:44
  • 1833

Lua处理中英文混合字符串

有一段如:’是一句测试,这pppppp[[[[[[aaaaxxxxxx,这是一句测试,这是一句测试,这是一句测试,这是一句测试,这是一句测试.’这样的中英文混合在一起的字符串,需要显示在游戏中:loc...
  • forestsenlin
  • forestsenlin
  • 2016年02月29日 22:59
  • 1467

[简易]中英文混合排序

【简易】中英文混合排序
  • MyWordYouDnotKnow
  • MyWordYouDnotKnow
  • 2016年03月29日 14:39
  • 1186

python 中英混合字符串格式对齐所引发的思考

对字符串非中文格式化,我们常用的方式是通过print 方式下的右对齐 n%s(左对齐-n%s)或者ljust\rjust; 但上面存在一个缺点就是对于含有中文字符串的处理是不兼容,导致打印出来格式还是...
  • annulsluo
  • annulsluo
  • 2015年10月31日 17:46
  • 2095

android 中英混合字符串数组按首字母进行排序

在Java中对于字符串数组的排序,我们可以使用Arrays.sort(String[])方法很便捷的进行排序。例如: String[] arrays = new String[] { "gy...
  • luoboo525
  • luoboo525
  • 2013年02月20日 15:26
  • 4484

PHP 中英文截取无乱码

在学习MySql 字符集时,解决了PHP中英文截取无乱码的问题。这个方法的核心在于判断取多少个字节上。 ...
  • gemire
  • gemire
  • 2014年04月26日 20:50
  • 1215

Java 截取中英文混合字符串

题目: 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个,如“我ABC”4,应该截为“我AB”,输入“我ABC汉DEF”,6,应该输出为“我...
  • yulei_qq
  • yulei_qq
  • 2015年04月16日 17:28
  • 2008

javascript 自己实现数字\字母和中文的混合排序方法 by FungLeo

版权声明:本文为 FengCms FungLeo 原创文章,未经 FungLeo 允许不得转载。 目录(?)[+] javascript 自己实现数字\字母和中...
  • sinat_17775997
  • sinat_17775997
  • 2016年09月08日 10:31
  • 697
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:中英文数字混合的复合格式处理
举报原因:
原因补充:

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