Подтвердить что ты не робот

Как заменить char на строку с пустым символом в С#.NET

У меня есть строка вроде этого:

string val = "123-12-1234";

Как заменить тире, используя пустую строку на С#.

Я имею в виду val.Replace(char oldChar, newChar);

Что нужно сделать в oldChar и newChar.

4b9b3361

Ответ 1

Вы можете использовать другую перегрузку Replace(), которая принимает строку.

val = val.Replace("-", string.Empty)

Ответ 2

Так как другие ответы здесь, хотя и правильные, явным образом не рассматриваю ваши первоначальные сомнения, я сделаю это.

Если вы вызываете string.Replace(char oldChar, char newChar), он заменит появление символа другим символом. Это замена "один к одному". Из-за этого длина результирующей строки будет одинаковой.

Вы хотите удалить тире, что, очевидно, не то же самое, что заменить их другим символом. Вы не можете заменить его "no character", потому что 1 символ всегда 1 символ. Поэтому вам нужно использовать перегрузку, которая принимает строки: строки могут иметь разную длину. Если вы заменяете строку длиной 1, с длиной строки 0, эффект заключается в том, что тире исчезли, вместо "ничего".

Ответ 4

Это кажется слишком простым, но:

val.Replace("-","");

Ответ 5

string val = "123-12-1234";

val = val.Replace("-", ""); // result: 123121234

Ответ 6

Если вы хотите заменить char в строке пустым char, что означает, что вы хотите удалить этот char из строки, прочитайте ответ Р. Мартиньо Фернандеса.

Вот пример того, как удалить char из строки (заменить на "Empty char" ):

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar >= 0)
        {
            input = input.Remove(indexOfChar, 1);
        }
        return input;
    }

или эта версия, которая удаляет все рекурсии char в строке:

    public static string RemoveCharFromString(string input, char charItem)
    {
        int indexOfChar = input.IndexOf(charItem);
        if (indexOfChar < 0)
        {
            return input;
        }
        return RemoveCharFromString(input.Remove(indexOfChar, 1), charItem);
    }

Ответ 7

Если вы находитесь в цикле, скажем, что вы прокручиваете список символов пунктуации, которые вы хотите удалить, вы можете сделать что-то вроде этого:

      private const string PunctuationChars = ".,!?$";
          foreach (var word in words)
                {
                    var word_modified = word;

                    var modified = false;

                    foreach (var punctuationChar in PunctuationChars)
                    {
                        if (word.IndexOf(punctuationChar) > 0)
                        {
                            modified = true;
                            word_modified = word_modified.Replace("" + punctuationChar, "");


                        }
                    }
               //////////MORE CODE
               }

Трюк следующий:

word_modified.Replace("" + punctuationChar, "");