Метод обрезки не очищает все пробелы - PullRequest
2 голосов
/ 06 декабря 2011

Привет, я работаю над базовой формой Windows в C #, и у меня есть небольшая проблема с методом Trim () .Есть 3 текстовых поля, в которые пользователь вводит свое имя, фамилию и ID.Затем он может сохранить информацию, нажав на кнопку сохранения, но я хочу убедиться, что он не оставляет пустых полей, поэтому я делаю следующий тест:

        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 ]

5 голосов
/ 06 декабря 2011

Метод Trim не изменяет содержимое текстовых полей, он просто возвращает обрезанную версию. Вам необходимо сохранить эту версию, например

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

Конечно, это может сделать изменения видимыми для пользователя (а также для доступа к потоку пользовательского интерфейса, что при других обстоятельствах может быть проблемой), поэтому гораздо лучше использовать локальную переменную, как в * 1007. *

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

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

Конечно, если это все, что вам нужно сделать, использование string.IsNullOrWhiteSpace может быть более удобной альтернативой.

2 голосов
/ 06 декабря 2011

Trim не изменяет строку.Вы хотите:

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)
{
  //..
}
2 голосов
/ 06 декабря 2011

Поскольку строки неизменны в C #, метод Trim () не изменяет саму строку; возвращает новый экземпляр обрезанной строки.

Вам необходимо присвоить результаты вызовов методов переменным, т.е.

CFN = Curator_FN.Text.Trim()

А затем проверьте, является ли CFN пустым.

1 голос
/ 06 декабря 2011

Trim не изменяет саму строку.Он возвращает новую усеченную строку.

Если вы не очень заинтересованы в изменении переменной, посмотрите на метод IsNullOrWhiteSpace .

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