У меня есть строка вроде этого:
string val = "123-12-1234";
Как заменить тире, используя пустую строку на С#.
Я имею в виду val.Replace(char oldChar, newChar);
Что нужно сделать в oldChar
и newChar
.
У меня есть строка вроде этого:
string val = "123-12-1234";
Как заменить тире, используя пустую строку на С#.
Я имею в виду val.Replace(char oldChar, newChar);
Что нужно сделать в oldChar
и newChar
.
Вы можете использовать другую перегрузку Replace()
, которая принимает строку.
val = val.Replace("-", string.Empty)
Так как другие ответы здесь, хотя и правильные, явным образом не рассматриваю ваши первоначальные сомнения, я сделаю это.
Если вы вызываете string.Replace(char oldChar, char newChar)
, он заменит появление символа другим символом. Это замена "один к одному". Из-за этого длина результирующей строки будет одинаковой.
Вы хотите удалить тире, что, очевидно, не то же самое, что заменить их другим символом. Вы не можете заменить его "no character", потому что 1 символ всегда 1 символ. Поэтому вам нужно использовать перегрузку, которая принимает строки: строки могут иметь разную длину. Если вы заменяете строку длиной 1, с длиной строки 0, эффект заключается в том, что тире исчезли, вместо "ничего".
val.Replace("-", "");
Это кажется слишком простым, но:
val.Replace("-","");
string val = "123-12-1234";
val = val.Replace("-", ""); // result: 123121234
Если вы хотите заменить 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);
}
Если вы находитесь в цикле, скажем, что вы прокручиваете список символов пунктуации, которые вы хотите удалить, вы можете сделать что-то вроде этого:
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, "");