VBレスキュー(花ちゃん)
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ各掲示板

メニューへ戻ります。 文字列操作関係のメニュー
1.文字列を半角→←全角等異種文字列に変換する
2.文字列の文字数・バイト数を取得する
3.文字列中から指定位置の文字を取り出す
4.指定の文字数になるまで、先頭又は、末尾に指定文字を埋める
5.文字列の半角換算のバイト数の取得及び文字列を指定のバイト数にカット
6.指定バイト位置から指定バイト数分の文字列を取り出す関数
7.半角カタカナだけを全角カタカナに変換する
8.文字列中から指定の文字を検索する方法色々
9.
10.
11.
12.
 .
20.その他、当サイト内に掲載の文字列操作に関するサンプル


6.指定バイト位置から指定バイト数分の文字列を取り出す関数(39_Str_06) (旧、SampleNo.111)
1.指定バイト位置から指定バイト数分の文字列を取り出す関数
2.
3.
4.
5.
6.

 下記プログラムコードに関する補足・注意事項 
動作確認:Windows 8.1 (Windows 7) / VB2013 (VB2010) / Framework 4.5.1 / 対象の CPU:x86
Option :[Compare Text] [Explicit On] [Infer On] [Strict On]
Imports :追加なし
参照設定:
追加なし
その他 :
    :
このサンプル等の内容を無断で転載、掲載、配布する事はお断りします。(私の修正・改訂・削除等が及ばなくなるので)
必要ならリンクをはるようにして下さい。(引用の場合は引用元のリンクを明記して下さい)
このページのトップへ移動します。 1.指定バイト位置から指定バイト数分の文字列を取り出す関数

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Label4.Text = "[" & fMidB(TextBox1.Text, CInt(TextBox2.Text), CInt(TextBox3.Text)) & "]"

    '下記の指定でエラーが発生せず取得できます。
    Debug.WriteLine("[" & fMidB("ABCあいう123", 0, 0) & "]")    '結果 []
    Debug.WriteLine("[" & fMidB("ABCあいう123", 0, 1) & "]")    '結果 [A]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 2, 1) & "]")    '結果 [C]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 3, 1) & "]")    '結果 []
    Debug.WriteLine("[" & fMidB("ABCあいう123", 3, 2) & "]")    '結果 [あ]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 4, 1) & "]")    '結果 []
    Debug.WriteLine("[" & fMidB("ABCあいう123", 4, 2) & "]")    '結果 [い]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 4, 7) & "]")    '結果 [いう123]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 2, 20) & "]")   '結果 [Cあいう123]
    Debug.WriteLine("[" & fMidB("ABCあいう123", 20, 20) & "]")  '結果 []
End Sub

Private Function fMidB(ByVal myString As String, _
                       ByVal sByt As Integer, ByVal nByt As Integer) As String
'指定バイト位置から指定バイト数分の文字列を取り出す関数
    Dim sjis As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
    Dim tempByt() As Byte = sjis.GetBytes(myString)
    Dim sumByt As Integer = sjis.GetByteCount(myString)
    If sByt < 0 Or nByt <= 0 Or sByt > sumByt Then Return ""
    Dim strTemp As String = sjis.GetString(tempByt, 0, sByt)
    '   If sByt > 0 And strTemp.EndsWith(ControlChars.NullChar) Then
    If sByt > 0 And strTemp.EndsWith("・"c) Then
        sByt += 1                   '開始位置が漢字の中なら次(前)の文字から開始
    End If
    If sByt + nByt > sumByt Then    '文字長より多く取得しようとした場合
        nByt = sumByt - sByt        '文字列の最後までの分とする
    End If
    fMidB = sjis.GetString(tempByt, sByt, nByt).Trim("・"c)
'    fMidB = fMidB.Trim(""c)
    Return fMidB
End Function

このページのトップへ移動します。 2.


このページのトップへ移動します。 3.


このページのトップへ移動します。 4.


このページのトップへ移動します。 5.


このページのトップへ移動します。 6.


このページのトップへ移動します。 検索キーワード及びサンプルコードの別名(機能名)





このページのトップへ移動します。