dポイントプレゼントキャンペーン実施中!

こんにちわ。
文字列を、バイト数でカットしたいのですが、方法がわかりません。

例えば、
"1あ2い3う4え5お"という文字列があるとすると
この文字列の4バイト分の"1あ2"を取り出したい
と言ったケースです。

ヘルプを調べたら、
LeftB,MidB,RightBの関数は、VB.NETから、
文字列が、Unicodeの2バイト扱いになるので、
サポートされていないと記述されていました。

LeftB関数と同じような事を、VB.NETでも行いたいです。
どなたか、アドバイスお願致します。

A 回答 (2件)

>文字列が、Unicodeの2バイト扱いになるので、


>サポートされていないと記述されていました。

無かったら、作るしかないですね。
私も最初、はまりました。

Public Shared Function MidB(ByVal value As String, ByVal start As Integer, ByVal length As Integer) As String
'バイト数に応じた部分文字列を取得する
Dim encod As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
Dim bytes As Byte() = encod.GetBytes(value.PadRight(start + length))
Return encod.GetString(bytes, start - 1, length)
End Function

Public Shared Function LeftB(ByVal value As String, ByVal length As Integer) As String
'バイト数に応じた部分文字列を取得する
Dim encod As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
Dim bytes As Byte() = encod.GetBytes(value.PadRight(length))
Const start As Integer = 0
Return encod.GetString(bytes, start, length)
End Function

Public Shared Function RightB(ByVal value As String, ByVal length As Integer) As String
'バイト数に応じた部分文字列を取得する
Dim encod As System.Text.Encoding = System.Text.Encoding.GetEncoding("Shift_JIS")
Dim bytes As Byte() = encod.GetBytes(value.PadLeft(length))
Dim start As Integer

start = UBound(bytes) + 1 - length 'バイト数

Return encod.GetString(bytes, start, length)

End Function


Public Shared Function LenB(ByVal vstr As String) As Integer

If vstr = "" Then
Return 0
Else
Return System.Text.Encoding.GetEncoding("Shift_JIS").GetByteCount(vstr)
End If

End Function
    • good
    • 0
この回答へのお礼

ご回答有難うございます。
コードまで有難うございます。
参考にさせていただきます。
有難うございました。

お礼日時:2006/05/23 20:40

System.Text.Encoding.Unicode.GetByteCount("123あ")


System.Text.Encoding.Default.GetByteCount("123あ")
この二つで違いが分かるので後は適当に工夫してください。
    • good
    • 0
この回答へのお礼

アドバイス有難うございました!

お礼日時:2006/05/23 20:41

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!