2016-04-25 7 views
0

ボタン付きの2つのtxtboxes(LongNameとShortName)を持つWinFormAppがあります。テキストボックスのテキストを20文字後に切り捨て、空白に空白が含まれている場合は空白

LongName txtboxにtxtが入力されている場合、LongName txtbox内のすべてのtxtを最初の20文字のimputに短縮し、「txtbox」内のスペースをすべて削除して、ShortName txtboxに結果を表示します。私はこれを正しくしようとするのは本当に苦労しています。私は試してみるためにいくつかの方法を試しましたが、最終的にはそれを正しくすることはできません。ここでは例のコードは次のとおりです。

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    Regex space = new Regex(@" "); 
    MatchCollection spacematch = space.Matches(txtLongName.Text); 
    if (txtLongName.Text.Length > 20) 
    { 
     string toTrim = txtLongName.Text; 

     toTrim = toTrim.Trim(); 

     txtShortName.Text = ("'" + toTrim.ToString() + "'"); 
    } 
    if (spacematch.Count > 0) 
    { 
     txtLongName.Text.Replace(" ", ""); 
    } 
}//closes method 

私はプロパティでのみ20文字までtxtboxを制限することができましたが、変数が多くのカスタマイズを可能にした場合、私はセットアップaにしたいと思います。

私は適切なトラックにいますか?

コードにエラーはありませんが、ボタンを実行すると何も起こりません。どんな助けもありがとうございます。

+0

をあなたは、スペースを削除していないあなたは短い名前 – techspider

+0

に割り当てられた前に、私は私が20しかし、私はむしろだろうにそれを設定したと述べたように、これは、デザインビューで発見されましたifステートメントに20(Trim)以上でアクションを実行させ、 –

+0

に制限しないでください@techspiderあなたは例を挙げることができますか? –

答えて

2

は、文字列自体を更新しません異なり

private void button1_Click(object sender, EventArgs e) 
    { 
     var shortName = txtLongName.Text.Trim().Replace(" ", ""); 

     var maxLength = (shortName.Length > 20) ? 20 : shortName.Length; 

     if(txtLongName.Text.Trim().Length > 0) 
      txtShortName.Text = shortName.Substring(0, maxLength); 
    } 
+0

これはまさに私が必要としていたものです。この方法と私のことを説明できる情報源がありますか?私はこの作品がなぜ私のものか、このような方法をいつ使うべきかを正確に学ぶのが大好きです(間違いから学ぶことは私をより良いコーダーにしてくれます)。 –

+1

必要のないすべての文字を削除して一時的なshortNameを取得します。秒は現在の文字列の長さを取得します。それが20文字以上の場合は、長さを20にする。前の手順で識別された長さに0から部分文字列を取得します。あなたがデバッグするなら、あなたは理解できるはずです – techspider

4

string.Replace()記述する必要があるように見えるのではなく、変更された新しい文字列を返します。

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    // remove space from txtLongName 
    txtLongName.Text = txtLongName.Text.Replace(" ", string.Empty); 

    // take only the first 20characters from txtLongName 
    txtShortName.Text = txtLongName.Text.Substring(0, Math.Min(txtLongName.Text.Length, 20)); 
} 

EDIT:以前のコードは、txtLongNameからスペースを削除します。それが意図されていない場合は、代わりにこれを使用する:

private void btnGetSN_Click(object sender, EventArgs e) 
{ 
    // remove space from txtLongName 
    var name = txtLongName.Text.Replace(" ", string.Empty); 

    // take only the first 20characters from txtLongName 
    txtShortName.Text = name.Substring(0, Math.Min(name.Length, 20)); 
} 
関連する問題