我想在这里制作一个随机函数,所以当我按下Button3时,它会取代数字" star。 9902 "一个全新的随机数,不替换文字" star。"然后显示在Textbox1中。 但是现在一切都被取代,包括文本。
我对编码很陌生,所以如果你们能帮助我的话会很棒。 VB13。
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
If TextBox1.Text.Contains("star.9902") Then
TextBox1.Text = TextBox1.Text.Replace("star.9902", "star. 'Here goes the random numbers")
End If
Dim rand As New Random
Dim letter As String = ""
For i = 0 To 3
letter = letter & ChrW(rand.Next(Asc("0"), Asc("9") + 1))
Next
TextBox1.Text = letter
End Sub
答案 0 :(得分:0)
首先,重用相同的Random实例,避免重复生成相同的序列。子外:
private shared rng as Random = new Random()
其次,要删除数字,正则表达式是迄今为止最简单的方法,同样在函数之外:
' Match one or more digits at the end of the input
private shared digitMatcher = new Regex("\d+$")
然后在函数中:
dim t = Textbox1.Text
t = digitMatcher.Replace(t, "")
然后附加新值,我只是生成0到9999之间的数字并使用前导数字格式化:
t &= (rng.Next(0, 10000)).ToString("0000")
最后:
Textbox1.Text = t
答案 1 :(得分:0)
我不确定我是否会跟随,再次对此我是新手。我想这是错的?
如果TextBox1.Text.Contains(" star.9902")那么 TextBox1.Text = TextBox1.Text.Replace(" star.9902"," star。'这里是随机数")
End If
Private Shared rng As Random = New Random()
Private Shared digitMatcher = New Regex("\d+$")
Dim t = TextBox1.Text
t = digitMatcher.Replace(t, "")
t &= (rng.Next(0, 10000)).ToString("0000")
TextBox1.Text = t
End Sub
答案 2 :(得分:0)
你可以这样做吗?
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim tempString as String
If TextBox1.Text.Contains("star.9902") Then
tempString = TextBox1.Text.substring(0,TextBox1.Text.IndexOf(".")+1)
End If
Dim rand As New Random
Dim letter As String = ""
For i = 0 To 3
letter = letter & ChrW(rand.Next(Asc("0"), Asc("9") + 1))
Next
TextBox1.Text = tempString & letter
End Sub
您更换所有内容的原因是因为您将TextBox1.Text
设置为仅在for循环中生成的letter
(并且未添加'star。')。
这适用于任何以'。'结尾的单词。 (以及之后的4个数字)。您可以轻松地将其更改为包含任意数量的数字。