我有一个像这样的字符串:
string val = "123-12-1234";
如何在C#中使用空字符串替换破折号。
我的意思是 val.Replace(char oldChar, newChar);
有什么需要去oldChar和newChar。
我有一个像这样的字符串:
string val = "123-12-1234";
如何在C#中使用空字符串替换破折号。
我的意思是 val.Replace(char oldChar, newChar);
有什么需要去oldChar和newChar。
Answers:
由于此处的其他答案(即使是正确的)也没有明确解决您最初的疑问,因此我会做。
如果调用string.Replace(char oldChar, char newChar),它将用另一个字符替换一个字符的出现。它是一对一的替代品。因此,结果字符串的长度将相同。
您想要的是删除破折号,这显然与用另一个字符替换破折号不同。您不能将其替换为“无字符”,因为1个字符始终是1个字符。这就是为什么您需要使用带字符串的重载:字符串可以具有不同的长度。如果将长度为1的字符串替换为长度为0的字符串,则结果是破折号消失了,由“ nothing”代替。
如果要用空字符替换字符串中的字符,这意味着要从字符串中删除该字符,请阅读R. Martinho Fernandes的答案。
这是一个如何从字符串中删除字符的示例(用“空字符”代替):
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, "");
我有Razvan Dumitru的拉丁语代码版本,因为我们甚至使用了100万个指标。场外我用双重替换:D
public static string CleanNumb(string numb)
{
foreach (char c in ".,'´")
numb = numb.Replace(c, ' ');
return numb.Replace(" ", "");
}