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