Visual Basic для начинающих..Подстроки

#vb.net

#vb.net

Вопрос:

Я новичок в программировании и пытаюсь разобраться в этом простом вопросе! Язык — Visual Basic! Вопрос ниже:

«Пользователям компьютерной программы часто нравится вводить числа с запятыми, вставленными посередине, например «1,234,000,688». Большинство компьютерных языков считают этот формат нечисловым. Напишите программу, которая вводит число, содержащее не более трех запятых, и выдает строку, содержащую то же число без запятых»

Когда я ввожу это число: 1,234,000,688 и нажимаю Отобразить в Visual Basic, я получаю это сообщение об ошибке -> Аргумент находится вне диапазона, исключение не обработано

Я не совсем уверен, почему это происходит, потому что я нахожусь в пределах моей длины strUserInput.

Мой код:

 Public Class Form1
    Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click

        'Variable declarations
        Dim strUserInput = txtUserInput.Text
        Dim strOutputNumber1 As String
        Dim strOutputNumber2 As String
        Dim strOutputNumber3 As String
        Dim strOutputNumber4 As String
        ' 1,234,000,688

        strOutputNumber1 = strUserInput.Substring(0, 1)
        strOutputNumber2 = strUserInput.Substring(2, 4)
        strOutputNumber3 = strUserInput.Substring(5, 8)
        strOutputNumber4 = strUserInput.Substring(9, 12)
        lblDisplayNumber.Text = strOutputNumber1 amp; strOutputNumber2 amp;         strOutputNumber3 amp; strOutputNumber4

    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
        lblDisplayNumber.Text = String.Empty
        txtUserInput.Text = String.Empty

    End Sub
End Class
  

Комментарии:

1. Вторым аргументом Substring является длина подстроки, а не конечная точка. Смотрите документацию здесь .

2. Ваше решение также основывается на предположении, что запятые находятся в определенных заранее определенных местах во входной строке. Это не указано как часть вопроса.

Ответ №1:

Вы получаете это исключение из-за того, как вы используете substring , последний из них начинается с индекса 9 и содержит 12 символов…это было бы число из 22 символов, а текст, который вы вводите, вероятно, намного короче. Вам не нужно чрезмерно усложнять для себя использование подстрок, весь приведенный выше код можно значительно сжать и очистить, просто используя String.Замените следующим образом:

 Public Class Form1
    Private Sub btnDisplay_Click(sender As Object, e As EventArgs) Handles btnDisplay.Click
        lblDisplayNumber.Text = txtUserInput.Text.Replace(",", "")
    End Sub

    Private Sub btnExit_Click(sender As Object, e As EventArgs) Handles btnExit.Click
        Me.Close()
    End Sub

    Private Sub btnClear_Click(sender As Object, e As EventArgs) Handles btnClear.Click
        lblDisplayNumber.Text = String.Empty
        txtUserInput.Text = String.Empty
    End Sub
End Class