VB.NETにて質問なのですが、
半角と全角が混在した長い文字列があります。
この文字列は決まったものではなく、文字列の長さや、内容は毎回異なります。
この文字列を仮にZ1として、これを50バイト単位で分割したいと思っています。(半角1バイト全角2バイトとして計算する)
開始位置が全角の真ん中の場合と、終了位置が全角の真ん中の場合が問題
なのですが、
前者は半角手前まで取得し、後者は半角手前からの取得とすれば文字の抜けがなく分割できるのですが、NETでVB6のMidB関数がなくSubstringでは文字数での取得なので、うまくいきません。
何かよい方法はないでしょうか?
http://anetm.com/dev/tools/vbdotnet/112230.htm
http://www.atmarkit.co.jp/fdotnet/dotnettips/014strcheck/strcheck.html
それらを使って、切り分けるしかないのでは?
以上。参考まで
正規表現を用いた全角、半角の分割です。参考にしてみて下さい。
ただしこれは半角文字以外は全角と判断しています。
Imports System.Text.RegularExpressions
Dim Han As New Regex("^((?<zen1>.*?)(?<han>[\x20-\x7F]+))*(?<zen2>.*)$", RegexOptions.Compiled)
Dim m = Han.Match(TextBox1.Text)
If m.Success Then
Dim capzen1 = m.Groups("zen1").Captures
Dim caphan = m.Groups("han").Captures
Dim grpzen2 = m.Groups("zen2")
ListBox1.Items.Clear()
For idx = 0 To capzen1.Count - 1
ListBox1.Items.Add(capzen1(idx).Value)
ListBox1.Items.Add(caphan(idx).Value)
Next
ListBox1.Items.Add(grpzen2.Value)
End If
助言ありがとうございます。
イメージはつかめましたので、それぞれのやり方を試してみます。
ツイート | ![]() |