503をR 3 に変換したい

いつもお世話になっております。

503 → R 3
511 → R11

というように、1文字目の5はRに変換。
2文字目が0なら半角の空白に変換したいです。

ちなみに数字は全て半角、Rは大文字の半角です。

よろしくお願いします。

こんにちは

以下でいかがでしょうか?

"R"+Int32.Parse(yourString.Substring(1)).ToString().PadLeft(2)

いつも教えていただき本当にありがとうございます。
今回も無事解決できました。

恐縮ですが、新たに疑問がでてきたので教えていただけないでしょうか。

yourStringが503の場合

yourString.Substring(1)).ToString() この部分は03を取得するということですよね?
.ToString()の最後の()は何のためにあるのでしょうか。

また、ここが一番わからないのですが、
.PadLeft(2)は調べたところ ”指定された文字数になるまで左側に空白を埋め込む”とありました。
03の0が何故空白に変換されるのでしょうか。03はすでに2桁の数字ではないのでしょうか?

よろしくお願い申し上げます。

こんにちは

Int32.Parse(yourString.Substring(1)).ToString().PadLeft(2)

なので、分解していきます。まず中身の、yourString.Substring(1) ですが、
0ベースの1文字目以降を返すので、例ですと03が返ります。

Int32.Parse("03").ToString().PadLeft(2)

次にInt32.Parse("03") なので、整数の3が返ります。

3.ToString().PadLeft(2)

3をToString()で文字列にすると"3"となり PadLeft(2)で " 3"となります。

.ToString()の最後の()は何のためにあるのでしょうか。

ToStringメソッドですので、本来はあるべきものなのですが、VBは言語仕様上省略可能となっています。そのため、このケースも省略しても問題ありません。
ちなみにC#ですと省略は不可です。

こんなに詳細にご教示くださいましてありがとうございます。

Int32.Parseは、0埋めの場合は0埋め抜きで変換されることを知りませんでした。

また、ToStringメソッドの後ろには本来()があるということも知りませんでした。

とても勉強になりました。大変ありがとうございました。

This topic was automatically closed 3 days after the last reply. New replies are no longer allowed.