从文本框中的一行输入到另一行的单词

时间:2018-11-04 19:43:54

标签: vb.net

我有5个文本框,分别标有NX1,NX2,NX3 .... NX5。

我有一个标有Textbox2的文本框,其中包含以下行:

2 4 6 8 11
1 2 3 4 12
3 4 7 9 13
4 5 7 9 14

是否可以从NX1中的TextBox2行(0)输入第一个单词/数字?即,第一个字(NX1中的数字2),(第二个字)在NX2中的数字4,在NX3中的数字6和在NX4中的数字8。等等。


我尝试过:

 Dim mytext As String
        Dim counter As Integer
        mytext = TextBox1.Text
        For counter = 1 To Len(TextBox1.Text)
            If Mid$(mytext, counter, 1) = " " Then
                GoTo NextPart
            End If
        Next counter
NextPart:
        MsgBox("'" + Mid$(mytext, 1, counter - 1) + "'")
        MsgBox("'" + Mid$(mytext, 2, counter - 1) + "'")

2 个答案:

答案 0 :(得分:1)

获取TextBox.Lines(0)。那是文本的第一行。如果文本部分由空格分隔,则仅Split()文本(空白是默认分隔符)。
如果不是,请指定分隔符:Split("[SomeChar]"c)

您将在String()数组中获得5个字符串。将String(0)NX1等相关。

Dim FirstLine As String = TextBox2.Lines(0)
Dim AllParts As String() = FirstLine.Split()
NX1.Text = AllParts(0)
NX2.Text = AllParts(1)
'(...)

如果需要其他文本行,请重复相同的步骤。

您还可以使用LINQ来执行字符串分配:

AllParts.Select(Function(s, i) Me.Controls("NX" & (i + 1)).Text = s).ToList()

或者,将所有内容组合成一个表达式:

TextBox2.Lines(0).Split().Select(Function(s, i) Me.Controls("NX" & (i + 1)).Text = s).ToList()

此方法的说明:

[TextBox].Lines(0)    => Returns the first line of text in a TextBoxBase control
Split()               => Splits the text content using the default separator. 
                         Returns an array of String
Select((string, int)) => Selects each string returned by the Split() method and updates
                         the index of each iteration.
                         Performs an action: sets a control`s Text property.
ToList()              => Materializes the Enumerable collection returned by Select()
                         If omitted, in this case, the iteration is performed just once 

Me.Controls("NX" & (i + 1)).Text = s
返回名称为Form的{​​{1}}控件+一个数字,并为其Text属性分配一个字符串。

答案 1 :(得分:0)

您可以使用[[(0, 0), (1.0, 0), (0, 1.0), (1.0, 1.0)], [(0, 1.0), (1.0, 1.0), (0, 2.0), (1.0, 2.0)], [(1.0, 0), (2.0, 0), (1.0, 1.0), (2.0, 1.0)], [(1.0, 1.0), (2.0, 1.0), (1.0, 2.0), (2.0, 2.0)]]分割字符串。

String.Split()

Dim columns = TextBox2.Lines(0).Split() For i = 0 To columns.Length - 1 Controls.Item("NX" & (i + 1)).Text = columns(i) Next 的{​​{1}}属性返回一个包含输入文本行的字符串数组。

Lines(不带参数)在空白处分割字符串,并返回包含部分(在这种情况下为第一行的列)的字符串数组。

表单的TextBox属性返回控件集合。控件集合的索引String.Split()属性接受Controls索引或控件名称为Item