文字列を指定の幅(バイト数)にカットする(漢字分断回避) (SNo.016) | |
使用コントロール | Button1 |
その他条件 | WindowsXP Visual Basic .NET 2003・VB2005 |
★ 文字列を指定の幅(バイト数)にカットする(漢字分断回避)
Private Function fStrCut(ByVal Mystring As String, ByVal nLen As Integer) As StringPrivate Sub Button1_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles Button1.Click Debug.WriteLine("[" & fStrCut("ABCあいう", 4) & "]") '結果 [ABC ] Debug.WriteLine("[" & fStrCut("ABCあいう", 9) & "]") '結果 [ABCあいう] Debug.WriteLine("[" & fStrCut("ABCあいう", 12) & "]") '結果 [ABCあいう ] End Sub '文字列を指定のバイト数にカットする関数(漢字分断回避) Dim sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS") Dim TempLen As Integer = sjis.GetByteCount(Mystring) If nLen < 1 Or Mystring.Length < 1 Then Return Mystring If TempLen <= nLen Then '文字列が指定のバイト数未満の場合スペースを付加する Return Mystring.PadRight(nLen - (TempLen - Mystring.Length), CChar(" ")) End If Dim tempByt() As Byte = sjis.GetBytes(Mystring) Dim strTemp As String = sjis.GetString(tempByt, 0, nLen) '末尾が漢字分断されたら半角スペースと置き換え(VB2005="・" で.NET2003=NullChar になります) If strTemp.EndsWith(ControlChars.NullChar) Or strTemp.EndsWith("・") Then strTemp = sjis.GetString(tempByt, 0, nLen - 1) & " " End If Return strTemp End Function |
|
半角・全角の混在する文字列を同じ半角換算文字長で取り出します。 最後の文字が漢字で、漢字分断がおきたら、半角スペースを付加し、対象文字数が少ない場合は、スペースを補います。 VB6.0で使っていたものを .NET 用に移植したものです。コードを見直し簡略化しました。 VB.NET2003 と VB2005 では、分断された時の末尾の文字が違うようです、VB2005="・" で.NET2003=NullChar になります、従って上記コードはどちらでも使用できるようにしております。 |
2004/06/10
2006/07/21
VBレスキュー(花ちゃん)
VB.NET2003 VB2005