Обрезка строки с использованием массива символов с использованием C # - PullRequest
1 голос
/ 01 сентября 2009

Когда вы используете метод Trim () для строкового объекта, вы можете передать ему массив символов , и он удалит эти символы из вашей строки, например:

string strDOB = "1975-12-23     ";
MessageBox.Show(strDOB.Substring(2).Trim("- ".ToCharArray()));

Это результат "75-12-23" вместо ожидаемого результата: "751223", почему это так?

Бонусный вопрос : Какой из них будет иметь больше накладных расходов по сравнению с этой строкой (он делает то же самое):

strDOB.Substring(2).Trim().Replace("-", "");

Ответы [ 5 ]

8 голосов
/ 01 сентября 2009

Потому что функция обрезки обрезает только символы с концов строки.

используйте Заменить, если хотите уничтожить их повсюду ...

1 голос
/ 01 сентября 2009

Из MSDN:

Возвращает новую строку, в которой все ведущие и завершающие вхождения набора указанных символов из текущий объект String удаляется.

Я думаю, это говорит само за себя.

0 голосов
/ 13 ноября 2009

Трим удаляет только начало и конец. Используйте Заменить, если хотите удалить из строки.

0 голосов
/ 01 сентября 2009

Другие ответили правильно. Обрезать только обрезает символы от начала и конца строки. Использование: -

Console.WriteLine( strDOB.Substring(2, 8).Replace("-","") )

Это предполагает фиксированный формат в исходной строке. Что касается производительности, если бы вы не делали миллион таких, я бы об этом не беспокоился.

0 голосов
/ 01 сентября 2009

Trim удаляет только символы из начала и конца строки. Внутренние символы «-» не будут удалены, равно как и внутренние пробелы. Вы хотите Replace().

...