初めて質問させていただきます。
今、悩んでいるのが、
「全角スペース、半角スペースが混在した文字列での文字数の取得方法」です。
例えば、「 うえおか」という文字列は普通に考えれば、
12バイトですよね。
でも、VBのLenやLenb関数を使うと、それぞれ14、7になってしまうんですよね。。
空白の部分は全角スペース+半角スペース×2になっています。
VBのバージョンは6なので、内部的にUnicodeを使っているからというところまでは
わかったのですが、、
どうしても、「5」文字欲しいと求められれば、10バイト分の「お」まで取得
したいのです。
半角と全角の文字は混在しています。
抽象的で申し訳ないのですが、
なにか良いアイディアがあったら教えてください。
よろしくお願いいたします。
> 例えば、「 うえおか」という文字列は普通に考えれば、
> 12バイトですよね。
その文字列が「Shift_JIS」だと仮定すれば、12バイトですけれども、
.NET等で良く使われる「UTF-8」形式だと、17バイトになったりします。(^^;
# ちなみに、VB6の内部文字コードは「UTF-16」です。
> でも、VBのLenやLenb関数を使うと、それぞれ14、7になってしまうんですよね。。
『StrConv関数』を使って、Unicode ←→ Shift_JIS の変換を行ってください。
Shift_JISのデータに変換してから、LeftB等でバイト単位に切り出してから、
その切り出した結果を、再度Unicodeに戻せば良いかと。
> どうしても、「5」文字欲しいと求められれば、10バイト分の「お」まで取得
> したいのです。
あれ?? 先頭から「5文字」分を取り出すのであれば、
「全角空白」「半角空白」「半角空白」「う」「え」
で、8バイト分なのでは?
魔界の仮面弁士さん
おかげで解決いたしました。
ありがとうございました!
ツイート | ![]() |