在visual basic中的多行文本框中传输固定单词以分隔单行文本框

时间:2015-05-22 12:31:38

标签: vb.net string

我在visual basic textbox中遇到问题,所以我的实际问题是我有一个 Multiline textbox1包含FirstName =" JOHN"在一行和LastName =" SMITH"在换行符中,我想仅在单独的单行文本框2中转移JOHN,而在其他单行 textbox3中转移SMITH。 我希望在点击复制按钮时发生这种情况。 像FirstName,LastName这样的textbox1的lefthanside保持不变,而像JOHN,SMITH这样的右边正在改变。 我创建了一个单独的函数,我已经尝试过

Public Class Form1
Dim itemsInTextBox As String() = TextBox1.Text.Split(vbCrLf.ToCharArray, StringSplitOptions.RemoveEmptyEntries)
Dim firstName As String = itemsInTextBox(0).Split("=".ToCharArray)(1)
Dim secondName As String = itemsInTextBox(1).Split("=".ToCharArray)(1)
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    TextBox2.Text = firstName
    TextBox3.Text = secondName
End Sub

结束班

这里是我想要完成的截图的链接。 http://tinypic.com/r/2mcev5w/8 提前致谢

3 个答案:

答案 0 :(得分:0)

我认为您可以通过新行将文本与文本框分开。类似的东西:

Dim itemsInTextBox as String() = TextBox1.Text.Split(vbCrLf.toCharArray, StringSplitOptions.RemoveEmptyEntries)
Dim firstName as String = itemsInTextBox(0).Split("=".toCharArray)(1)
Dim secondName as String = itemsInTextBox(1).Split("=".toCharArray)(1)

这假设文本框中的行由新行分隔。如果它被其他东西分开,那就把它放在split方法中。这也保留了引号(你想要吗?)

编辑:用于设置其他文本框

TextBox2.Text = firstName
TextBox3.Text = secondName

Working form

EDIT2:您必须在按钮点击时创建这些变量。如果全局执行,它将在TextBox1存在之前运行。

Public Class Form1

Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim itemsInTextBox As String() = TextBox1.Text.Split(vbCrLf.ToCharArray, StringSplitOptions.RemoveEmptyEntries)
    Dim firstName As String = itemsInTextBox(0).Split("=".ToCharArray)(1)
    Dim secondName As String = itemsInTextBox(1).Split("=".ToCharArray)(1)
    TextBox2.Text = firstName
    TextBox3.Text = secondName
End Sub

答案 1 :(得分:0)

您的样本和说明不同。在您的示例中,您使用FIRSTNAME = JOHN,并在您的描述中使用first-name =“john”,这是非常不同的。

让我们使用您的样品。你的测试应该是这样的。

TextBox2.Text = GetValue("FIRSTNAME=JOHN" & vbcrlf & "LASTNAME=SMITH") 
TextBox3.Text = GetValue("FIRSTNAME=JOHN" & vbcrlf & "LASTNAME=SMITH")

你试试这样,你会发现它没有返回正确的信息。

您必须拆分每一行,然后再使用=符号再次拆分这些行。

Function GetValue(ByVal data As String, ByVal key As String) As String

    Dim lines() As String = data.Split(Chr(10))

    For Each line As String In lines
        line = line.Trim()
        Dim subData() As String = line.Split("="c)

        If subData(0) = key Then
            Return subData(1)
        End If
    Next

    Return ""
End Function

Sub Main()

    Dim data As String

    data = "FIRSTNAME=JOHN" & Environment.NewLine & "LASTNAME=SMITH"

    Console.WriteLine(GetValue(data, "FIRSTNAME"))
    Console.WriteLine(GetValue(data, "LASTNAME"))
    Console.ReadLine()

End Sub

答案 2 :(得分:0)

只需将itemsList的声明移动到副本的子目录中即可 编辑:还需要移动字符串的声明

Public Class Form1
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    Dim itemsInTextBox As String() = TextBox1.Text.Split(vbCrLf.ToCharArray, StringSplitOptions.RemoveEmptyEntries)
    Dim firstName As String = itemsInTextBox(0).Split("=".ToCharArray)(1)
    Dim secondName As String = itemsInTextBox(1).Split("=".ToCharArray)(1)
    TextBox2.Text = firstName
    TextBox3.Text = secondName
End Sub