2020年7月29日水曜日

生半可

仕事で全角半角混合の文字列の半角文字を1バイト、全角文字を2バイトとして合計80バイトまで取得するという要件があって、「excelのlenb関数みたいな感じで簡単にできるだろう。」とタカをくくっていたら文字コードや正規表現の知識が必要になり、これまで何となく分かっているような気になっていた知識のためそれらを正しく理解するのに時間が掛かり予定よりも遅れてしまった。

どちらもITに携わる者としては理解しておくべき事だし、汎用的な知識でもあるから結果的には良い経験になったとは思うけれどタカをくくったのがマズかったなと反省している。故に調査も行き当たりばったりで進めてしまい余計に時間が掛かった。

今回のケースで言えば、substrb(lenbに相当すると思っていた関数)が代替できなそうと感づいた時点で文字列を走査して正規表現により半角全角を判定する方針にするべきだったし、正規表現についてのサンプルはインターネットよりも既存ソースから探すべきであった。(結局、既存ソースに同じ要件の内部関数があるのを見つけたのでそちらを流用した。)