Linq String Replace - PullRequest
       2

Linq String Replace

0 голосов
/ 30 марта 2020
var arr = new[] {"A ", "B ", "C "}.ToList();
        arr.ForEach(a => a = a.Replace(" ", ""));

Почему это не удаляет пробелы из строк в массиве?

Это работает arr = arr.Select(a => a.Replace(" ", "")).ToList();

1 Ответ

1 голос
/ 30 марта 2020

Проблема в том, что a.Replace(..) возвращает (ссылку на) новую строку. Вы назначаете эту новую ссылку обратно локальному параметру a. Однако этот параметр a является копией ссылки в списке. Обновление a не не обновляет ссылку в самом списке.

Если вы хотите обновить "на месте", вам придется сделать это по старинке:

for (var i=0; i<arr.Count; i++)
{
    arr[i] = arr[i].Replace(" ", "");
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...