半角文字か全角文字を判定するには?

解決


キリンジ  2004-04-22 08:30:20  No: 83097

初めて質問させていただきます。

今、悩んでいるのが、
「全角スペース、半角スペースが混在した文字列での文字数の取得方法」です。

例えば、「    うえおか」という文字列は普通に考えれば、
12バイトですよね。
でも、VBのLenやLenb関数を使うと、それぞれ14、7になってしまうんですよね。。
空白の部分は全角スペース+半角スペース×2になっています。
VBのバージョンは6なので、内部的にUnicodeを使っているからというところまでは
わかったのですが、、
どうしても、「5」文字欲しいと求められれば、10バイト分の「お」まで取得
したいのです。

半角と全角の文字は混在しています。

抽象的で申し訳ないのですが、
なにか良いアイディアがあったら教えてください。

よろしくお願いいたします。


魔界の仮面弁士  2004-04-22 09:17:10  No: 83098

> 例えば、「    うえおか」という文字列は普通に考えれば、
> 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バイト分なのでは?


キリンジ  2004-04-23 08:05:00  No: 83099

魔界の仮面弁士さん

おかげで解決いたしました。
ありがとうございました!


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加