修剪方法不会清除所有空格

时间:2011-12-06 00:33:25

标签: c# winforms string trim

您好我正在使用c#中的基本Windows窗体,我对 Trim()方法有一点问题。 用户输入他的名字,姓氏和ID时,有3个文本框。 然后他可以通过点击保存按钮来保存信息,但我想确保他没有留下空白框,所以我做了以下测试:

        string CFN = Curator_FN.Text;
        string CLN = CURATOR_LN.Text;
        string CID = CURATOR_ID.Text;

        Curator_FN.Text.Trim();
        CURATOR_ID.Text.Trim();
        CURATOR_LN.Text.Trim();

        if (((Curator_FN.Text.Length == 0) || (CURATOR_ID.Text.Length == 0) || (CURATOR_LN.Text.Length == 0)))
        {
            MessageBox.Show("You Have to enter a First Name, a Last Name and an ID");
            Empty = true;
        }

问题是如果我只用空格键做一些空格, Trim()方法不会将它们视为空格。 也许我只是误解了 Trim()方法,如果我这样做,你对我如何做到这一点有任何想法吗? 提前致谢。

4 个答案:

答案 0 :(得分:5)

Trim方法不会修改文本框的内容,只需返回修剪后的版本。您需要存储此版本,例如

Curator_FN.Text = Curator_FN.Text.Trim(); 

当然,这有可能使用户可以看到更改(并且还必须访问在其他情况下可能存在问题的UI线程),因此使用本地变量就好了

var curatorFn = Curator_FN.Text.Trim(); 
// etc

if (curatorFn.Length == 0 || ... ) {
    // show messagebox
}

当然,如果这就是你需要做的,使用string.IsNullOrWhiteSpace可能是一个更方便的选择。

答案 1 :(得分:2)

由于字符串在C#中是不可变的,因此Trim()方法不会更改字符串本身;它返回一个修剪过的字符串的新实例。

您需要将方法调用的结果分配给变量,即

CFN = Curator_FN.Text.Trim()

然后检查CFN是否为空。

答案 2 :(得分:2)

修剪不会修改字符串。你想要:

Curator_FN.Text = Curator_FN.Text.Trim();
CURATOR_ID.Text = CURATOR_ID.Text.Trim();
CURATOR_LN.Text = CURATOR_LN.Text.Trim();

此外,如果您使用的是.NET 4,则可能还需要检查String.IsNullOrWhiteSpace方法。

if (String.IsNullOrWhiteSpace(Curator_FN.Text) ||
    String.IsNullOrWhiteSpace(CURATOR_ID.Text) ||
    String.IsNullOrWhiteSpace(CURATOR_LN.Text)
{
  //..
}

答案 3 :(得分:1)

修剪不会修改字符串本身。它返回一个新的修剪字符串。

如果您不关心修改变量,请查看IsNullOrWhiteSpace方法。

if (String.IsNullOrWhiteSpace(curatorFn) || ... ) {
    // show messagebox
}