投稿者 魔界の仮面弁士  (社会人) 投稿日時 2011/2/5 09:24:11
> Public Function GetNumber(ByVal Str As String) As String
Str という変数名は避けた方が良いと思いますよ。

VB には『Str 関数』という物がありますので、たとえ動作上は問題が無くとも、
コードとして見たときに、どちらの意味であるのか分かりにくくなってしまいます。


> For i As Integer = 1 To Str.Length
>   Search = Mid(Str, i, 1)
String は Char の配列のように扱う事が出来ます。
そのため 1文字ずつ取り出す場合は、Mid 関数を使わずとも
 For i As Integer = 0 To Str.Length - 1
  Dim Search As Char = Str(i)
のようにして、String のインデクサを使って簡単に取り出すことができます。

# 上記の「Str(i)」は、Str関数の事ではなく、「Str.Chars(i)」の方の意味です。


さらに言えば、ループ処理を For から For Each に変更することで
 For Each Search As Char In Str
  If Search Like "[0-9]" Then
   ResultNumber.Append(Search)
  End If
 Next
のように短く書く事もできます。