[21] Re:全角文字対応substr(S-JIS専用) | |
2001/7/3 (Tue) 18:10:26 - あけび |
| 処理概要。
処理する文字列を、例えば
半角文字 -> H
全角1バイト目 -> 1
全角2バイト目 -> 2
\0 -> *
と置き換えると、
あAいBうえ
は
12H12H1212
となります。
これに最初のパターン置換で1バイトおきに\0を挿入して
1*2*H*1*2*H*1*2*1*2*
とします。
次のパターン置換では、全角文字の並びを 1*2* から 12** に変えます。
12**H*12**H*12**12**
こうなってしまえば、あとは開始位置、文字長ともに2倍した値で
substrすれば、全角文字が途中で寸断されることは無くなります。
substrが済んだら、不要となった\0を削除して戻り値とします。
\0(\x00)を使うのは、S-JISでは半角文字、全角1バイト目及び2バイト目でも
通常の文字列に含まれることが無く、
作業用1バイト文字として都合が良いからです。
|
|
|