如何用C#.NET中的空字符replacestring中的字符
我有这样的string:
string val = "123-12-1234";
我怎样才能在C#中使用空stringreplace破折号。
我的意思是val.Replace(char oldChar, newChar);
newChar
和newChar
需要去哪些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, "");