大復活C#学習_全角を半角に変換する
これまで作ってきた干支を算出するプロジェクトは、.NET Coreのコンソールアプリを用いて書いている。
全角数字を半角と誤って入力するとエラーになるので、例外処理で全角を半角に変換するコードをVisual Basicを参照して処理するように試みたがうまくゆかない。
初心者には行き詰まりはつらい。一日かかって調べて、ようやくその理由が分かった。
C#には半角や全角を交互に変換するメソッドはないので、Visual Basicを参照して、using Maicrosift.VisualBasicと宣言し、全角を半角に変換するのであればStrings.StrConv(source, VbStrConv.Narrow, 0x0411)を用いる。しかし、である。
そもそも、.NET Coreを用いたCUIのソリューションエクスプローラの欄に<参照>の表示がない。調べるとNuGetでインストールすればよいと書いてあったのでやってみるがエラーになる。
そこで、最初からやり直し、CUIを.NET Coreではなく、.NET Frameworkのコンソールアプリで作り直してみると、ソリューションエクスプローラーに<参照>が表示されるし、Visual Basicのメソッドもエラーにならずに作動した。
このことから、素人の浅知恵で誤解かもしれないが、Visual Basicのメソッドを使用したい場合は.NET Coreではなくて.NET Frameworkを使わないといけないと判断した。このあと誤解が解けるようであれば訂正するつもりだが、すでにC#は.NET Coreから.NET 5に移行する方針で、NET FrameworkやVisual Basicも開発は終了しているとのことなので、その状況のなかで起きていることかもしれない。今後はどうなるかわからないので、困惑してしまう。これだけで一日かかってしまった。
でも解決して気分はすっきり。
ちなみに、コードは簡単だ。昨日のコードに追加した例外処理中の肝心な部分だけ備忘録として記載する。
**********
using Microsoft.VisualBasic; //冒頭で宣言して以下のコードを例外処理に追加
//全角→半角変換」
string source = etoYear; //わざと変換して見える化する
string etoYearCorrected = Strings.StrConv(source, VbStrConv.Narrow, 0x0411);
Console.WriteLine(" ⇒ 全角数字を半角に変換しました。");
etoYear = etoYearCorrected; //もとに戻す