MS Access Tips/Sample and VBA and Blog customize etc...

半角1桁全角2桁で計算するLenB、LeftB関数の代替関数

タイトル画像

Access2000以降は、文字コードがShift-JIS から Unicode になったので半角/全角の区別なく2バイトになります。
ですので、LenB, LeftB などの関数でも半角を2桁として計算します。
それを半角は1桁として計算するLenB, LeftB関数の代わりになる関数を紹介します。

難易度:

知恵袋で回答

Access初心者です。全角と半角が混在している文字列から、指... - Yahoo!知恵袋

上記の質問の回答用に作成した関数です。

回答してから検証してみたら、Unicode文字(Shift-JISにない文字、例えば、豈、更など)は、「?」に文字化けします。

そういえば、StrConv関数はUnicode文字に対応していないのでした。

Unicode文字、サロゲートペア文字に対応させる

さらに、Windows Vista 以降では、サロゲートペア文字というのが追加されました。Unicodeはすべて1文字2バイトが基本なんですが、サロゲートペア文字は4バイトで1文字になるというものです。

サロゲートペア入門: CodeZine (コードジン)

ついでなので、これにも対応させてみました。
ただし、サロゲートペア文字も2桁として計算します。

簡単なテストしかしてませんので、実運用で使用する場合は、自己責任で。何があっても当方は保証しません。

おかしな結果が出たらご報告いただけると幸いです。

拍手する

Leave a reply






Trackbacks

trackback URL
http://hatenachips.blog34.fc2.com/tb.php/467-dace807f
該当の記事は見つかりませんでした。