トップ回答者
全角文字列から半角文字列の変換

質問
回答
-
まずはざっくりとですが、こちらなどが参考になるのではないかと思います。
ひらがなとカタカナ、全角と半角の変換を行う: .NET Tips: C#, VB.NET
一口に全角・半角変換といっても、確定的に変換が決まるわけではないケースがあります。
アルファベットと数字だけであれば特に気にする必要はないかもしれませんが、記号や平仮名・片仮名が入ってくると相互に一対一で変換できないケースもあります。もし上記で思った通りに実現できないようであれば、具体的に何をどう変換したいかの仕様や例を記述されるとよいかもしれません。
きよくらならみ
-
> 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
すべての返信
-
まずはざっくりとですが、こちらなどが参考になるのではないかと思います。
ひらがなとカタカナ、全角と半角の変換を行う: .NET Tips: C#, VB.NET
一口に全角・半角変換といっても、確定的に変換が決まるわけではないケースがあります。
アルファベットと数字だけであれば特に気にする必要はないかもしれませんが、記号や平仮名・片仮名が入ってくると相互に一対一で変換できないケースもあります。もし上記で思った通りに実現できないようであれば、具体的に何をどう変換したいかの仕様や例を記述されるとよいかもしれません。
きよくらならみ
-
> 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
-
お返事が遅れまして大変申し訳ありません。
回答ありがとうございます。
>> Windows2012サーバー上のWEBサービス開発にて、
>ASP.NET Web サービスでしょうか?
はい、そうです。
実現したいのは IISを通してWEBからTEXTが「123ABC」など全角文字が入ったものを「123ABC」に変更したいのですが、.csの中でどのように変換すれば良いのか、という要件になります。
>#質問内容に適切なフォーラムを選んでいるでしょうか? ASP.NET Web サービスに関係する>質問なら IIS のフォーラムより ASP.NET のフォーラムの方が適切と思います。
なるほど、失礼しました。
kappa_do2001
- 編集済み kappado2001 2015年9月25日 7:12
-
> 実現したいのは IISを通してWEBからTEXTが「123ABC」など全角文字が入ったもの
> を「123ABC」に変更したいのですが、.csの中でどのように変換すれば良いのか、とい
> う要件になります。と言うことは、ある文字列の中で、全角の数字 "0123456789" (U+FF10 ~ U+FF19) があれば、それを無条件で半角の数字 "0123456789" (U+0030 ~ U+0039) に変換する C# のコード(VB.NET の StrConv などのライブラリは使用しないという条件で)が分かればいいということなのですか?
回答としてマークを付けられていますが、問題はまだ解決していないのですよね? であれば、全てマークは外して質問を続けてはいかがですか。(マークが付いていると見る人が減って回答が集まりにくくなりますので)
-
そういった事情であれば、先のリンクで紹介している他の手法(Microsoft Visual Studio International Feature Pack含む)も採用が難しいかもしれませんね。
パッと思いついた別の方法としては、Win32APIのLCMapStringを使う方法があります。
LCMapString関数
上記のLCMapStringをC#から利用する方法をblogで紹介されている方がおられました.
C# で StrConv を実装する
他には、変換する文字が限られている(英数字のみ等)ようであれば、変換テーブルを作っておいて自力で変換するなどの方法も現実解としてアリだと思います。きよくらならみ
-
【追伸】
Visual C# のフォーラムに以下のような記事がありましたので紹介しておきます。
全角数字のみを半角にしたい
https://social.msdn.microsoft.com/Forums/ja-JP/c6521dac-6e99-4ab3-af24-b515b10f152cこれを見ても解決できなければ連絡ください。