Почему этот метод расширения не работает (C #, строковый массив)


Вы не можете изменять строку, она неизменна.

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

public static string Replace(this string str, string[] oldValues, string newValue)
{
    string result = str;

    for (int i = 0; i < oldValues.Length; i++)
    {
        result = result.Replace(oldValues[i], newValue);
    }

    return result;
}

Вы можете узнать больше о System.String здесь


1

Он не работает, потому что Replace не изменяет строку, которую вы ей отправляете. В C # строки не могут измениться после их создания. Скорее, String.Replace создает новую строку после выполнения своей работы и возвращает ее.

Измените его на: result = result.Replace (oldValues ??[i], newValue);

Андре избил меня до этого :)

C #,

c#,

0

Ответов: 2


Вы не можете изменять строку, она неизменна.

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

public static string Replace(this string str, string[] oldValues, string newValue)
{
    string result = str;

    for (int i = 0; i < oldValues.Length; i++)
    {
        result = result.Replace(oldValues[i], newValue);
    }

    return result;
}

Вы можете узнать больше о System.String здесь


1

Он не работает, потому что Replace не изменяет строку, которую вы ей отправляете. В C # строки не могут измениться после их создания. Скорее, String.Replace создает новую строку после выполнения своей работы и возвращает ее.

Измените его на: result = result.Replace (oldValues ??[i], newValue);

Андре избил меня до этого :)

C #,
Похожие вопросы