あと、VB.NET で「え?こんな面倒なことしないといかんの?」という話だと、「バイト数での文字列の分割」かなあ。
「全角文字を途中でぶった切ってしまうことは在り得ない」という条件での処理なので、「文字列の最後が『全角文字の前半分の1byte』じゃないか?」みたいなややこしいチェックはしないでいい。だから、純粋に「byte 数で文字列を分割できる split や substr」みたいなのがあれば嬉しかったんだけど、無いのね、そんなの(^^;
ちゃんと「byte 数」じゃなく「文字数」としてアレコレ処理してくれるようで、有難迷惑だなあ(^^;
今回は、
'わたしは慎吾 00100100''あの子はチンコ 00001110''あたいは茜 00101011'
みたいなデータ(固定長)を、15byte と 8byte にぶった切りたいだけ。
例えば、「わたしは慎吾 」と「00100100」という具合に。
あれこれ試して、
Dim bytes() As Byte = System.Text.Encoding.GetEncoding("Shift_JIS").GetBytes(hogehoge)Dim byteF() As Byte = CType(Array.CreateInstance(GetType(Byte), 15), Byte())Dim byteR() As Byte = CType(Array.CreateInstance(GetType(Byte), 8), Byte())Array.Copy(bytes, 0, byteF, 0, 15) ' 1~15byteArray.Copy(bytes, 15, byteR, 0, 8) ' 16~23byteDim strF As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(byteF)Dim strR As String = System.Text.Encoding.GetEncoding("Shift_JIS").GetString(byteR)※hogehoge に「わたしは慎吾 00100100」のような文字列が入っている。
とかしたんだけど、上に書いたように「全角コードを跨ぐことはない」ので「全角コードである」ということを意識する必要もないのに、なんか、Shift_JIS エンコードしてからバイト文字列に分割したりと面倒臭いことこの上無い。
もっとスマートな方法があると思うので、ぜひ、VB.NET マスターの方はコメントを!!(笑)
コメントする