这有什么原因吗?我问这个问题是因为如果你需要使用大量的空字符,那么你就会陷入与你使用大量空字符串时相同的情况。

编辑:这种用法的原因是:

myString.Replace ('c', '')

所以从myString中移除所有的'c'实例。


当前回答

这种用法的原因是:myString。Replace ('c', ") 所以从myString中删除所有的'c'实例。

要从字符串中删除特定的字符,可以使用string重载:

 myString = myString.Replace ("c", String.Empty);

你的语句

 myString.Replace ('c', '\0')

不会删除任何字符。它只会将它们替换为'\0' (End-Of-String, EOS),结果不同。一些字符串操作可能会在遇到EOS时停止,但在. net中,大多数操作将像对待其他char一样对待它。最好尽量避免使用“\0”。

其他回答

使用Char。MinValue,它的工作原理与“\0”相同。但要注意它与String.Empty不同。

与字符串不同,char是一个大小固定的离散的东西。字符串实际上是字符的容器。

所以,Char。在这种情况下,空是没有意义的。如果你有一个char,它就不是空的。

如果你想删除满足特定条件的字符,你可以使用这个:

string s = "SoMEthInG";
s = new string(s.Where(c => char.IsUpper(c)).ToArray());

(这将在字符串中只留下大写字符。)

换句话说,您可以“使用”字符串作为IEnumerable<char>,对其进行更改,然后将其转换回如上所示的字符串。

同样,这不仅允许因为lambda表达式而删除特定的字符,尽管如果您像这样更改lambda表达式可以这样做:c => c != 't'。

不是回答你的问题,但表示一个默认字符,你可以使用just

default(char)

这和char是一样的。MinValue,与\0相同。但是不应该将它用于空字符串之类的东西。

myString = myString.Replace('c'.ToString(), "");

好吧,这对于删除字母来说不是特别优雅,因为. replace方法有一个接受字符串参数的重载。但这适用于删除回车符、换行符、制表符等。下面的例子删除了制表符:

myString = myString.Replace('\t'.ToString(), "");