Как получить символы текстового поля после новой строки в VB.Net

Прямо сейчас я создаю язык сценариев (EngineScript). В настоящее время вы можете ввести только одну команду / функцию (IE: sout "Hello world") но я хочу расширить его.

Так что мне было интересно, знаете ли вы, ребята, какой-нибудь код для ввода символов после новой строки в отдельную переменную в VB2012.Net. Спасибо:-)

Вот мой код:

Public Class Form1

    Dim strvar0 As String
    Dim strvar1 As String
    Dim strvar2 As String
    Dim strvar3 As String
    Dim numvar As Integer


    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click

        Dim first4Chars As String = TextBox1.Text.Substring(0, 4)
        Dim restOfChars As String = TextBox1.Text.ToString.Substring(5)

        Select Case first4Chars
            Case "sout"
                Select Case restOfChars
                    Case "box:str0"
                        TextBox2.Text = strvar0 & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                    Case Else
                        TextBox2.Text = restOfChars & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                End Select

            Case "str0"
                strvar0 = restOfChars

            Case Else
                TextBox2.Text = "Error".ToString

        End Select

    End Sub



    Private Sub HelpToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HelpToolStripMenuItem.Click
        Dim a As New Help
    End Sub

    Private Sub RunToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RunToolStripMenuItem.Click
        Button1.PerformClick()
    End Sub

End Class

... я делаю это форма Windows

@ Джемби, когда я использую твой код:

Public Class Form1
    Dim strvar0 As String
    Dim strvar1 As String
    Dim strvar2 As String
    Dim strvar3 As String
    Dim numvar As Integer



    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        For Each Line In TextBox1.Text.Split(vbNewLine)

            Dim first4Chars As String = TextBox1.Text.Substring(0, 4)
            Dim restOfChars As String = TextBox1.Text.ToString.Substring(5)

            Select Case first4Chars
                Case "sout"
                    Select Case restOfChars
                        Case "box:str0"
                            TextBox2.Text = strvar0 & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                        Case Else
                            TextBox2.Text = restOfChars & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                    End Select

                Case "str0"
                    strvar0 = restOfChars


                Case "exit"
                    Me.Close()

                Case "lofi"

                    Select Case restOfChars
                        Case "box:str0"
                            Process.Start(strvar0)
                        Case Else
                            Process.Start(restOfChars)
                    End Select


                Case "inet"
                    Process.Start("iexplore.exe" + restOfChars)
                Case Else
                    TextBox2.Text = "Error".ToString


            End Select
        Next

        TextBox1.Clear()

    End Sub



    Private Sub HelpToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles HelpToolStripMenuItem.Click
        Dim a As New Help
    End Sub

    Private Sub RunToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles RunToolStripMenuItem.Click
        Button1.PerformClick()


    End Sub

    Private Sub MenuStrip1_ItemClicked(sender As Object, e As ToolStripItemClickedEventArgs) Handles MenuStrip1.ItemClicked

    End Sub
End Class

Это не генерирует ошибки, но когда я печатаю

sout Helloновая линияsout World

следующее должно быть выведено из моего окна вывода:

Hello



COMMAND //sout\\ has been successfully used
World




COMMAND //sout\\ has been successfully used

Но вместо этого это происходит:

Hello
sout World



COMMAND //sout\\ has been successfully used

Помогите!!!

2 ответа

Вы можете изменить свой код следующим образом:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    For Each Line in TextBox1.Text.Split(vbNewLine)
        Dim first4Chars As String = Line.Substring(0, 4)
        Dim restOfChars As String = Line.Substring(5)

        Select Case first4Chars
            Case "sout"
                Select Case restOfChars
                    Case "box:str0"
                        TextBox2.Text = strvar0 & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                    Case Else
                        TextBox2.Text = restOfChars & vbCrLf & vbCrLf & vbCrLf & vbCrLf & "COMMAND //sout\\ has been successfully used"
                End Select
            Case "str0"
                strvar0 = restOfChars
            Case Else
                TextBox2.Text = "Error".ToString
        End Select
    Next
End Sub

Вам также следует проверить значение Line.Lenght больше 5, иначе вы получите ArgumentOutOfRangeException.

Я думаю, что вы хотите использовать многострочное текстовое поле в вашей форме (есть свойство / флажок для многострочного текста для текстовых полей).

Затем вы можете получить строку из текстового поля и сделать split('\n'); в теме. (в синтаксисе VB конечно)

Это вернет массив строк, которые являются вашими строками.

Код для разделения будет выглядеть так: (ну, в любом случае, в C#)

string contents = MyTextBox.Text;
string[] lines = contents.Split('\n'); // or Environment.NewLine instead of '\n'
Другие вопросы по тегам