[ASP.NET]半形全形 互轉 (處理難字)
通常在.NET裡面,轉半形全形,最簡單的方法會透過   
Microsoft.VisualBasic.Strings裡面的StrConv()來幫忙轉換。    
例如:
Me.textbox1.Text=Strings.StrConv(Me.textbox1.Text, VbStrConv.Narrow)
但是,這個方式遇到難字,例如「堃」,會轉成「?」。
  
因為StrConv跟VbStrConv的列舉型別與文化特性有關。
其實最簡單的方式,還是「判斷字串是否為需要轉換的字」,因為半形轉全形,通常只針對「特殊符號」跟「英數字」。
  
這邊有兩個function可以用來轉換半形跟全形(已經處理掉難字跟空白),有興趣的可以直接拿去用。
請參考:強力鎯頭 VB BLOG
    Public Function ToWchr(ByRef data As String) As String
        Dim sb As New StringBuilder
        Dim ascii As Integer = 0
        For Each c As Char In data.ToCharArray()
            ascii = Convert.ToInt32(c)
            If ascii = 32 Then
                sb.Append(Convert.ToChar(12288))
            Else
                sb.Append(Convert.ToChar(ascii + IIf(ascii < 127, 65248, 0)))
            End If
        Next
        Return sb.ToString
    End Function
    ' 全形 轉 半形
    Public Function ToNchr(ByRef data As String) As String
        Dim sb As New StringBuilder
        Dim ascii As Integer = 0
        For Each c As Char In data.Replace("〔", "[").Replace("〕", "]").Replace("'", "'").ToCharArray()
            ascii = Convert.ToInt32(c)
            If ascii = 12288 Then
                sb.Append(Convert.ToChar(32))
            Else
                If ascii > 65280 And ascii < 65375 Then
                    sb.Append(Convert.ToChar(ascii - 65248))
                Else
                    sb.Append(Convert.ToChar(ascii))
                End If
            End If
        Next
        Return sb.ToString
    End Functionblog 與課程更新內容,請前往新站位置:http://tdd.best/
