如何用C#.NET中的空字符replacestring中的字符

我有这样的string:

string val = "123-12-1234"; 

我怎样才能在C#中使用空stringreplace破折号。

我的意思是val.Replace(char oldChar, newChar);

newCharnewChar需要去哪些newChar

您可以使用不同的重载Replace()来获取string。

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

既然其他答案在这里,即使正确,没有明确解决你最初的疑惑,我会做的。

如果你调用string.Replace(char oldChar, char newChar) ,它将用另一个字符replace一个字符的出现。 这是一个一个换一个。 正因为如此,结果string的长度将是相同的。

你想要的是删除破折号,这显然是不同于用另一个字符replace他们。 你不能用“无字符”代替它,因为1个字符总是1个字符。 这就是为什么你需要使用带string的重载:string可以有不同的长度。 如果将长度为1的stringreplace为长度为0的string,则效果是破折号消失,replace为“无”。

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

MSDN源码

这似乎太简单了,但是:

 val.Replace("-",""); 
 string val = "123-12-1234"; val = val.Replace("-", ""); // result: 123121234 

如果你想用一个空字符replace一个string中的字符,这意味着你想从string中删除该字符,请阅读R. Martinho Fernandes的答案。

这里是如何从string中删除字符(用“空字符”replace)的例子:

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

或者删除一个string中所有字符重复的版本:

  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, "");