掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
全角文字の数え方 (ID:82064)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
SJISなどのDBCSでは2バイト文字と1バイト文字がありますが、 VBは基本的に内部UNICODEで動作しています。 UNICODEは1文字が2バイトで表現されます。 したがって、サンプルの「おおおお99い」は Len("おおおお99い") = 7 LenB("おおおお99い") = 14 となります。 #ちなみに、SJISで扱う場合は一旦StrConv関数で変換して、 Len(StrConv("おおおお99い", vbFromUnicode)) = 6 LenB(StrConv("おおおお99い", vbFromUnicode)) = 12 となります。 改行コードについては、通常vbCrLfが使われますが、 これは vbCr と vbLf を連結したものですので、 2文字=4バイトで表現されています。 (Excelのセル内文字列やXMLストリームなど、vbLfを改行コードとして 認識する処理系もあるので注意が必要です。) Len(vbCrLf) = 2 LenB(vbCrLf) = 4 上に書いたような理由で、 1.与えられた文字列に対してLen関数で総文字列数を取得 2.与えられた文字列中のvbCrLfをカウント 3.総文字列数からvbCrLfの個数を引く という処理で文字数を算出できますが。 ついでに空白とかタブとか無視したい場合は2.を拡張すればOKです。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.