2016-10-20 13 views
0

私はプログラミングが初めてで、この簡単な質問を理解しようとしています!言語はVisual Basicです!Visual Basic Beginner .. SubStrings

"コンピュータプログラムのユーザーは、「1,234,000,688」などのように、中央にカンマを挿入して数字を入力することがよくあります。ほとんどのコンピュータ言語では、この形式は数値ではありません。カンマなしで同じ番号を含む文字列を生成する "

この番号を入力すると1,234,000,688と表示されます。このエラーメッセージが表示されます - >引数が範囲外です例外が処理されていません

なぜ私は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 & strOutputNumber2 &   strOutputNumber3 & 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 
+0

'Substring'への第2引数は長さですエンドポイントではなく部分文字列の[こちらのドキュメントを参照してください](https://msdn.microsoft.com/en-us/library/aka44szs(v = vs.110).aspx)。 – Comintern

+0

また、入力文字列内の特定の事前定義された場所にカンマがあることも前提としています。これは質問の一部として指定されていません。 – peterG

答えて

0

、最後の1がインデックス9で始まり、12個の文字を拡張... 22になりますあなたが入力として持っているテキストは、はるかに短いでしょう。あなたは上記のコードのすべてが大幅に凝縮し、単にこのようなString.Replaceを使用してクリーンアップすることができ、サブストリングを使用して自分のために物事を過度に複雑にする必要はありません。

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