[スレッド全体]

[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バイト文字として都合が良いからです。

[▼次のスレッド]
INCM/CMT
Cyclamen v3.84.01