none
全角文字列から半角文字列の変換 RRS feed

  • 質問

  • Windows2012サーバー上のWEBサービス開発にて、ファイルなどから読み込まれた電話番号などが全角文字であった場合に半角文字に変換する方法を考えていますが、思いつきません。

    csファイルの中でどのような方法で実現すれば良いのか、ご存じの方、どうかご教示願います。

    よろしくお願い致します。


    kappa_do2001

    2015年9月13日 16:46

回答

  • まずはざっくりとですが、こちらなどが参考になるのではないかと思います。

    ひらがなとカタカナ、全角と半角の変換を行う: .NET Tips: C#, VB.NET

    一口に全角・半角変換といっても、確定的に変換が決まるわけではないケースがあります。
    アルファベットと数字だけであれば特に気にする必要はないかもしれませんが、記号や平仮名・片仮名が入ってくると相互に一対一で変換できないケースもあります。

    もし上記で思った通りに実現できないようであれば、具体的に何をどう変換したいかの仕様や例を記述されるとよいかもしれません。


    きよくらならみ

    • 回答の候補に設定 佐伯玲 2015年9月16日 0:42
    • 回答としてマーク 佐伯玲 2015年9月25日 4:59
    2015年9月13日 23:59
  • > Windows2012サーバー上のWEBサービス開発にて、

    ASP.NET Web サービスでしょうか?

    > ファイルなどから読み込まれた電話番号などが全角文字であった場合に半角文字に
    > 変換する方法を考えていますが、思いつきません。

    質問者さんの言う「全角」と「半角」の定義を明確にしてください。

    少なくとも、単に全角の数字 "0123456789" (U+FF10 ~ U+FF19) を半角の数字 "0123456789" (U+0030 ~ U+0039) に変換すればいいのか、それ以外の要件があるのか(ある場合はその内容を詳しく)書いてください。


    #質問内容に適切なフォーラムを選んでいるでしょうか? ASP.NET Web サービスに関係する質問なら IIS のフォーラムより ASP.NET のフォーラムの方が適切と思います。

    • 回答としてマーク kappado2001 2015年9月25日 7:11
    2015年9月14日 0:21

すべての返信

  • まずはざっくりとですが、こちらなどが参考になるのではないかと思います。

    ひらがなとカタカナ、全角と半角の変換を行う: .NET Tips: C#, VB.NET

    一口に全角・半角変換といっても、確定的に変換が決まるわけではないケースがあります。
    アルファベットと数字だけであれば特に気にする必要はないかもしれませんが、記号や平仮名・片仮名が入ってくると相互に一対一で変換できないケースもあります。

    もし上記で思った通りに実現できないようであれば、具体的に何をどう変換したいかの仕様や例を記述されるとよいかもしれません。


    きよくらならみ

    • 回答の候補に設定 佐伯玲 2015年9月16日 0:42
    • 回答としてマーク 佐伯玲 2015年9月25日 4:59
    2015年9月13日 23:59
  • > Windows2012サーバー上のWEBサービス開発にて、

    ASP.NET Web サービスでしょうか?

    > ファイルなどから読み込まれた電話番号などが全角文字であった場合に半角文字に
    > 変換する方法を考えていますが、思いつきません。

    質問者さんの言う「全角」と「半角」の定義を明確にしてください。

    少なくとも、単に全角の数字 "0123456789" (U+FF10 ~ U+FF19) を半角の数字 "0123456789" (U+0030 ~ U+0039) に変換すればいいのか、それ以外の要件があるのか(ある場合はその内容を詳しく)書いてください。


    #質問内容に適切なフォーラムを選んでいるでしょうか? ASP.NET Web サービスに関係する質問なら IIS のフォーラムより ASP.NET のフォーラムの方が適切と思います。

    • 回答としてマーク kappado2001 2015年9月25日 7:11
    2015年9月14日 0:21
  • こんにちは、kappado2001 さん
    フォーラムオペレータの佐伯 玲 です。

    お寄せいただけている返信をご覧いただけましたらご返信くださいね。
    ご参考になった際には「回答としてマーク」と設定いただけましたらと思います。

    またご指摘にもある通りASP.NET関連であれば私のほうからスレッドをこのまま移動すること可能ですのでその点もご確認いただけましたらと思います。


    宜しくお願い致します。

    TechNet Community Support 佐伯 玲

    2015年9月15日 2:49
  • きよくらならみ 様

    出張に出ていたため、お返事が遅れました、本当に申しわけありません。

    ご回答ありがとうございました。

    こちらのサイトの方法を使うことをお客様と検討したのですが、VBのDLLをインストールするという方法をとらなければいけない(?)と言われ、お客様理由で実現できませんでした。

    実現したいのは IISを通してWEBからTEXTが「123ABC」など全角文字が入ったものを「123ABC」に変更したいのですが、.csの中でどのように変換すれば良いのか、という要件になります。



    kappa_do2001

    2015年9月25日 7:09
  • SurferOnWww

    お返事が遅れまして大変申し訳ありません。

    回答ありがとうございます。

    >> Windows2012サーバー上のWEBサービス開発にて、

    >ASP.NET Web サービスでしょうか?

    はい、そうです。

    実現したいのは IISを通してWEBからTEXTが「123ABC」など全角文字が入ったものを「123ABC」に変更したいのですが、.csの中でどのように変換すれば良いのか、という要件になります。

    >#質問内容に適切なフォーラムを選んでいるでしょうか? ASP.NET Web サービスに関係する>質問なら IIS のフォーラムより ASP.NET のフォーラムの方が適切と思います。

    なるほど、失礼しました。


    kappa_do2001


    2015年9月25日 7:11
  • 佐伯 様

    承知しました、お返事が遅れた件、申し訳ありません。


    kappa_do2001

    2015年9月25日 7:13
  • > 実現したいのは IISを通してWEBからTEXTが「123ABC」など全角文字が入ったもの
    > を「123ABC」に変更したいのですが、.csの中でどのように変換すれば良いのか、とい
    > う要件になります。

    と言うことは、ある文字列の中で、全角の数字 "0123456789" (U+FF10 ~ U+FF19) があれば、それを無条件で半角の数字 "0123456789" (U+0030 ~ U+0039) に変換する C# のコード(VB.NET の StrConv などのライブラリは使用しないという条件で)が分かればいいということなのですか?

    回答としてマークを付けられていますが、問題はまだ解決していないのですよね? であれば、全てマークは外して質問を続けてはいかがですか。(マークが付いていると見る人が減って回答が集まりにくくなりますので)

    2015年9月25日 8:36
  • そういった事情であれば、先のリンクで紹介している他の手法(Microsoft Visual Studio International Feature Pack含む)も採用が難しいかもしれませんね。

    パッと思いついた別の方法としては、Win32APIのLCMapStringを使う方法があります。
    LCMapString関数

    上記のLCMapStringをC#から利用する方法をblogで紹介されている方がおられました.
    C# で StrConv を実装する



    他には、変換する文字が限られている(英数字のみ等)ようであれば、変換テーブルを作っておいて自力で変換するなどの方法も現実解としてアリだと思います。

    きよくらならみ

    2015年9月25日 9:39
  • 【追伸】

    Visual C# のフォーラムに以下のような記事がありましたので紹介しておきます。

    全角数字のみを半角にしたい
    https://social.msdn.microsoft.com/Forums/ja-JP/c6521dac-6e99-4ab3-af24-b515b10f152c

    これを見ても解決できなければ連絡ください。

    2015年9月25日 10:01