[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 Function
blog 與課程更新內容,請前往新站位置:http://tdd.best/