大復活C#学習_全角を半角に変換する

f:id:yasui_swift:20210218050318j:plain

キンセンカ

これまで作ってきた干支を算出するプロジェクトは、.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; //もとに戻す

 

f:id:yasui_swift:20210218051111p:plain

修正後の画面