我很高兴有一个站点,因为我设法完成了我的项目,但是我有一件事情要做。
我想从多个TextBox中提取唯一的数字,然后将结果分配给另一个TextBox。
TextBox1.Text = 6,13,69,79
TextBox2.Text = 13,61,79
TextBox3.Text = 48,54,72,79
TextBox4.Text = 1,41,48,69
TextBox5.Text = 19,46,71,73,78
TextBox6.Text = 6,23,29,49,67,73,77
and so on:
Output: 6,13,61,69,79,48,54,72,1,19,46,71,73,78,23,29,67
类似的东西。
或者我在考虑一些更简单的方法:
从一串数字中删除重复项:
(1,2,2,3,4,7,8,9,10).
因此,我们将这些TextBox中的所有数字放入字符串中,然后删除重复项并将结果分配给另一个TextBox。
答案 0 :(得分:1)
从文本框中提取数字,使用它们的部分名称作为参考("TextBox"
,因为您的控件分别命名为TextBox1
,TextBox2
等。请注意,字符串比较如下是,区分大小写)。
将值分配给List(Of Integer)
(在其他地方可能有用)。
Dim result As Integer
Dim NumbersList As List(Of Integer) = New List(Of Integer)()
For Each txt As TextBox In Me.Controls.OfType(Of TextBox).Where(Function(ctl) ctl.Name.StartsWith("TextBox"))
NumbersList.AddRange(txt.Text.Split(","c).Select(
Function(n)
Return If(Integer.TryParse(n, result), result, Nothing)
End Function).ToArray())
Next
创建一个仅包含按值排序的不同元素的字符串。
将字符串分配给用于显示它的TextBox的Text
属性:
txtResult.Text = String.Join(",", NumbersList.Distinct().OrderBy(Function(n) n))
如果您不关心订购部分,只需删除.OrderBy(Function(n) n)
答案 1 :(得分:0)
尝试一下
disableHostCheck
答案 2 :(得分:0)
如果您仍尝试对大量文本框使用相同的方法,则可能会这样:
'Throw everything into a list of String initially.
Dim AllNumbers As New List(Of String)
'Loop through each TextBox, splitting them by commas
For x = 1 To 60
AllNumbers.AddRange(CType(Me.Controls("TextBox" & x), TextBox).Text.Split(CChar(",")))
Next
'Remove non-integer entries.
AllNumbers.RemoveAll(Function(x) Integer.TryParse(x, New Integer) = False)
'Join the distinct list to an array, then back to comma separated format into wherever you want it output.
OutputText.Text = String.Join(",", AllNumbers.Distinct().ToArray())