« やっと終わりそう | トップページ | 午前半休 »

2019/11/28

ようやくコード実装おわた・・

日立案件の担当コード実装がようやくおわた。

もうね、最後の最後にテストしてて仕様どおりに組んだのにちゃんと動かないとこがあってねぇ。

単に文字の結合するだけのものなのにコード実装1日かかりましたよ。えぇ。

何のことはない、とある名称項目が30文字なんだけど予備名称(最大10文字)が入力されたら、名称項目の後ろにくっつけるんだけどね。

ただし、30文字を超えた場合は名称項目から予備名称分がすべて設定されるように文字を削ってから結合するってものなのね。

.Netであれば数分でできそうなもんなんだけど、このスクリプトの使えなさときたらもうやばすぎですよ。

まず文字コードが一般的なShiftJISとかUTFとかではないんですよ。

この時点でクソ確定なんだけど、TSSコードて独自のコードでねぇ。

例えば半角英数字(ABC・・、0123・・・)なんかは1文字扱いなんだけど、全角文字(漢字など)は1文字で2文字分を使うのね。

そして問題なのが半角カタカナ。

1文字で1文字分なんですよ。

マルチバイトコード、要は半角英数字以外の文字コードは1文字に4バイトを使用する仕様で、半角英数字は1文字が1バイトなのね。

でだ。半角カタカナはマルチバイトコードなので1文字4バイト使用するのよね。

なので文字数的にちょっと面倒なことをしないといかんのですわ。

文字列を1文字ずつ見ることになるんだけど、その際バイト単位で見ないといけない。

英数字であれば1文字1バイト、半角カタカナ以外のマルチコードは1文字4バイトだけど2文字でカウント、半角カタカナは1文字4バイトを1文字でカウント。

これで文字数を数えることになりますよ。

要は英数字とマルチバイトコード文字が混在した場合の文字数の数え方がめんどくさいということです。

英数字とマルチバイトコードの違いは1文字が1バイトか4バイトかってことで判別はできるんだけど、半角カタカナとそれ以外という判別に関しては用意されている関数メソッドでは実現できない。

なので、半角カタカナのコードの範囲を調べることから始まり、その範囲のコードであれば半角カタカナでそれ以外の範囲は半角カタカナ以外というように判別して文字数を数える関数メソッドを作ると。

その関数メソッドを利用して、名称項目から予備名称が入る分の文字列のみ抽出する関数メソッドも作って、ようやく仕様通りに動作するものができましたよ。

で、とりあえずテストも完了したので、別案件の作業に入れますよ。

さて明日は午前休取って、母親を連れて年金事務所へ行ってきますよ。

ふ☁☀

« やっと終わりそう | トップページ | 午前半休 »

日記・コラム・つぶやき」カテゴリの記事

コメント

コメントを書く

(ウェブ上には掲載しません)

« やっと終わりそう | トップページ | 午前半休 »

サイト内検索
ココログ最強検索 by 暴想

Amazone

  • Snugpak (スナグパック) ジャングルブランケット Coyote [並行輸入品]
  • Amazone
無料ブログはココログ