C# 在使用了20个字符和空格(如果包含空格)后修剪文本框文本

C# 在使用了20个字符和空格(如果包含空格)后修剪文本框文本,c#,winforms,C#,Winforms,我有一个WinFormApp,它有两个TXTBOX(LongName和ShortName)和一个按钮 当在LongName txtbox中输入txt时,我想按下按钮将LongName txtbox中的所有txt缩短为输入的前20个字符,并删除txtbox中的所有空格,然后在ShortName txtbox中显示结果。我真的很难做到这一点。我尝试了很多方法,但最终似乎都做不好。下面是示例代码: private void btnGetSN_Click(object sender, EventArgs

我有一个WinFormApp,它有两个TXTBOX(LongName和ShortName)和一个按钮

当在LongName txtbox中输入txt时,我想按下按钮将LongName txtbox中的所有txt缩短为输入的前20个字符,并删除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
我已经能够在属性中将txtbox限制为仅20个字符,但是我想设置一个If变量以允许更多的自定义

我走对了吗


代码中没有错误,但是当执行按钮时,什么也没有发生。感谢您的帮助。

看来您需要以不同的方式书写

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);
    }

看起来你需要用不同的方式来写

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);
    }
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));
}
编辑:前面的代码将从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));
}
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));
}
编辑:前面的代码将从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));
}

在指定短名称之前,您不会删除空格这在设计视图中可以找到,正如我所说,我已将其设置为20,但是如果超过20(修剪),我宁愿让if语句执行操作,而不是限制to@techspider你能举个例子吗?你正试图从长文本中删除空格。我已经说过了,尝试过了,因为你没有将Replace的返回值重新分配给任何东西……你没有在分配给short name之前删除空格这在设计视图中找到,正如我说的,我已经将它设置为20,但是如果超过20(Trim),我宁愿让if语句执行操作不限to@techspider你能举个例子吗?你正试图从长文本中删除空格。我已经说过,尝试,因为你没有重新分配Replace的返回值给任何东西……这正是我所需要的。你有没有资料可以解释这种方法和我的方法?我很想确切地了解为什么这对我有效,以及何时使用像这样的方法对我等等(从错误中学习是我成为一个更好的编码者的原因)。通过删除所有你不需要的字符来获得一个临时的短名;二是获取当前字符串的长度;如果超过20个字符,长度取20;现在将子字符串从0取到上一步中确定的长度;如果您调试,您应该能够理解这正是我所需要的。你有没有资料可以解释这种方法和我的方法?我很想确切地了解为什么这对我有效,以及何时使用像这样的方法对我等等(从错误中学习是我成为一个更好的编码者的原因)。通过删除所有你不需要的字符来获得一个临时的短名;二是获取当前字符串的长度;如果超过20个字符,长度取20;现在将子字符串从0取到上一步中确定的长度;如果您进行调试,您应该能够理解