アルゴリズムをループする VB.net で関数を作成しようとしています。Split コマンドを使用してアルゴリズムを配列に分割したので、値を含む配列ができました。次に、それらをループして、必要に応じて # を「Number」に置き換えようとしますが、VB.net はエラーをスローします。私はVB.netにかなり慣れていないので、なぜこれをしているのかわかりません。アルゴリズムは次の形式ですA B C D E F 1 2 3 #
Function generate(ByVal alg As String)
Dim algSplit As String() = alg.Split(" ")
For Each digit In algSplit
Dim replacement As String = algSplit(digit).Replace("#", "Number")
algSplit(digit) = replacement
Next
Dim result As String = String.Join("", algSplit)
MsgBox(result)
End Function
クイックフィックスはありますか?
質問パート 2: ループが機能しました。しかし、私が目指していた機能の一部を壊してしまいました。
Public Function GetRandom(ByVal Min As Integer, ByVal Max As Integer) As Integer
Dim Generator As System.Random = New System.Random()
Return Generator.Next(Min, Max)
End Function
Public Function RandLet() As String
Dim number As Integer = GetRandom(1, 26)
Dim Alphabet() As String = New String() {"A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V""W", "X", "Y", "Z"}
Dim Letter As String = Alphabet(number)
Return Letter
End Function
Function generate(ByVal alg As String) As String
Dim algSplit As String() = alg.Split(" "c)
For index As Int32 = 0 To algSplit.Length - 1
algSplit(index) = algSplit(index).Replace("#"c, GetRandom(1, 9)).Replace("%"c, RandLet())
Next
Dim result As String = String.Join("", algSplit)
MsgBox(result)
Return result
End Function
最終的な結果は次のA B C D E F 1 2 3 | L % % % | N # # #
ようになりますABCDEF123|LXXX|N888
。基本的に、各 # と各 % は、毎回異なる番号ではなく同じ番号に置き換えられます。ループに陥っていればこんなことにはならないと思っていたのですが、何を見逃したのでしょうか?