私はこれらの古い VB 関数をまだ使用していないので、C# に簡単に変換できる VB.NET でそれを行う方法を紹介します。
Private Function RandomString(rnd As Random, size As Integer) As String
Dim chars() As 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", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
Dim builder As New System.Text.StringBuilder()
For i As Integer = 0 To size - 1
builder.Append(chars(rnd.Next(0, chars.Length)))
Next
Return builder.ToString()
End Function
5 文字のランダムな文字列を生成してみましょう。
Dim rnd = New Random()
Dim rndString = RandomString(rnd, 5)
それ以来、ランダムインスタンスを渡していることに注意してください。メソッドで作成してループで呼び出すと、Random
シードと同じ時間を使用するため、同じ文字列が生成されます。
編集:結果を分離する必要があることだけを見てきました。オーバーロードされたバージョンを使用できます。
Private Overloads Function RandomString(rnd As Random, size As Integer, separator As String, everyNChar As Int32) As String
Dim builder = New System.Text.StringBuilder()
Dim chars() As 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", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9"}
For i As Integer = 0 To size - 1
If i > 0 AndAlso i Mod everyNChar = 0 Then
builder.Append(chars(rnd.Next(0, chars.Length))).Append(separator)
Else
builder.Append(chars(rnd.Next(0, chars.Length)))
End If
Next
Return builder.ToString()
End Function
これはセパレータをカウントしないことに注意してください。