2016-06-29 4 views
1

は私がTextBox1テキストボックスに次の文字列を持っていると仮定します。FPO100200%を10 & FORD *サブストリング - - 範囲の例外のうち引数startIndexパラメータ

さて、私はTextBox1をの部分文字列からデータを取得し、2つの以上のテキストボックスを持っています。できるだけ早く私はtextbox3の行を追加としてtexbox2にサブFPO100200を取得しようとして

Public Class Form1 
Private Function textmoves(mytext As String, indexchar As String) 
    Dim Index As Integer = mytext.IndexOf(indexchar) 
    Return Index 
End Function 
Private Sub Splittext() 
    Dim text As String = TextBox1.Text 
    TextBox2.Text = text.Substring(0, textmoves(text, "%")) 
    TextBox3.Text = text.Substring(textmoves(text, "%"), textmoves(text, "&")) 
End Sub 

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

エンドクラス

イム、その後、texbox3でサブ10.

、:私は、次のコードを持っていますそれは私に範囲外のエラーの引数を投げた。何が間違っているのか教えていただけますか?どうもありがとう!

LE:また、ボタンを押さずに自動的にtextbox1でテキストが変更されたときに、そのテキストボックスにデータを入力させることはできますか?

答えて

1

第2パラメータは、終了位置ではなく長さです。最初の式が位置付けられたのは、最初のインデックスがゼロであるためです。今、私は私のミスを参照してください"10"使用

TextBox3.Text = text.Substring(textmoves(text, "%")+1, textmoves(text, "&")-textmoves(text, "%")-1) 

またはより良い

Dim pos As Integer = textmoves(text, "%") 
TextBox2.Text = text.Substring(0, pos) 
TextBox3.Text = text.Substring(pos+1, textmoves(text, "&")-pos-1) 

Demo.

+0

はい、今私は間違いを参照してください提案されています。ありがとうございました。私はオリジナルの質問にも編集を追加しましたが、今は遅すぎます。 –

+0

@CatalinCernat最後の編集は残りの質問と一致していないので、答えを得る最も良い方法は新しい質問を投稿することです。 'Splittext'が動作していること、Button1_Clickにアタッチしたことを伝えて、ボタンを取り除きたいとしましょう。この質問にリンクし、更新されたコードを投稿してください。これは、コメントに収まらない素敵な答えを得るはずです(基本的に、テキストボックス1のテキスト変更イベントを聞いて、Splittextで例外をキャッチする必要があります)。 – dasblinkenlight

1

2番目のパラメータは、インデックス0から始めるが、%のインデックスから始まっているときの&のインデックスです。だから、%Indexを& Indexから引く必要があります。

TextBox3.Text = text.Substring(textmoves(text, "%"), textmoves(text, "&") - textmoves(text, "%")) 
+0

を取得するには

。ありがとうございました。私は10を得ることはできませんが、結果として%10を取得します。答えは、ベローズ100%、 –

関連する問題