◀一般トップへ
  • 2287 変換でちょっと(^^;
  • [2287] 変換でちょっと(^^; すい 2002年09月13日 20:00

    変換機能ですが、
    ・全角英数→半角英数
    ・半角英数→全角英数
    の対応が取れていないので違和感があります。(;^^a

    「半角英数→全角英数」は [0-9A-Za-z] の他、ASCIIコードでその周辺に
    散らばっている一般的な記号も全角文字に変換します。
    具体的には 0x20(スペース)~0x7e(~) まで全てが変換対象になっています。
    > 0123456789ABCDEF
    >20: !"#$%&'()*+,-./
    >30:0123456789:;<=>?
    >40:@ABCDEFGHIJKLMNO
    >50:PQRSTUVWXYZ[\]^_
    >60:`abcdefghijklmno
    >70:pqrstuvwxyz{|}~

    一方「全角英数→半角英数」は本当にタイトル通り純粋に [0-9A-Za-z] しか半角に変換しません。

    という事で使っていてちょっと変な感じです。
    「全角英数→半角英数」の方がタイトル通りの変換機能なのですが、
    「半角英数→全角英数」のように一般的な記号も変換してくれた方が実用的な気がします。
    「全角英数→半角英数」の方がソースも綺麗に整理されていて弄りやすそ...(を)
    名前を 半角英数記号 とかに変更しちゃったりして。
    # ちょっとこの辺は No Try でソース弄るのは恐いので どなたか
    # CMemory.cpp 内
    # void CMemory::ToZenkaku() 半角→全角(なんかグチャグチャ (^^;)
    # void CMemory::ToHankaku() 全角→半角
    # の中

    あと、
    ・英大文字→英小文字
    ・英小文字→英大文字
    ですが、全角文字のアルファベット類も変換してくれる事は知っているのですが...
    変換対象は
    ・半角文字の A~Z ⇔ a~z
    ・全角文字のアルファベット A~Z ⇔ a~z
    ・全角文字のギリシャ文字 Α~Ω ⇔ α~ω
    ・全角文字のロシア文字 А~Я ⇔ а~я
    のみで「全角文字の数字 Ⅰ~Ⅹ ⇔ ⅰ~ⅹ」が変換対象になっていません!!
    > ⅠⅡⅢⅣⅤⅥⅦⅧⅨⅩ(8754~875d) ⇔ ⅰⅱⅲⅳⅴⅵⅶⅷⅸⅹ(eeef~eef8)

    あ、いえ、ちょっと PPA.DLL の仕様をキーワードヘルプにまとめていたんですが、
    PPA.DLL には LowerCase(S)/UpperCase(S) という物があって、これがまた全角文字にしっかりと対応しているんですよ。
    んで、こちらはしっかりと
    ・半角文字の A~Z ⇔ a~z
    ・全角文字のアルファベット A~Z ⇔ a~z
    ・全角文字のギリシャ文字 Α~Ω ⇔ α~ω
    ・全角文字のロシア文字 А~Я ⇔ а~я
    ・全角文字の数字 Ⅰ~Ⅹ ⇔ ⅰ~ⅹ
    全て変換してくれていて、負けている。← のが、ちょっと悔しいゾ、というお話しなのですが。
    こんなの使わない気もしますが(爆)

    # CMemory.cpp 内
    # void CMemory::ToLower()
    # void CMemory::ToUpper()
    # の中