Joa*_*nge 244 .net c# string char base-class-library
是否有一个原因?我问,因为如果你需要使用大量空字符,那么你会遇到与使用大量空字符串时相同的情况.
编辑:这种用法的原因是:
myString.Replace ('c', '')
Run Code Online (Sandbox Code Playgroud)
所以从myString中删除'c'的所有实例.
Jon*_*eet 257
没有像空炭一样的东西.你可以得到的最接近的是'\0'
Unicode"null"字符.鉴于您可以将其嵌入到字符串文字中或者非常容易地表达它,为什么您需要一个单独的字段呢?同样,"它容易混淆""
和" "
"的论点也不适用'\0'
.
如果您可以举例说明您想要使用它的原因以及您认为它会更好的原因,那可能会有所帮助......
Hen*_*man 186
这种用法的原因是:
myString.Replace ('c', '')
所以'c'
从 myString 中删除所有实例。
要从字符串中删除特定字符,您可以使用字符串重载:
myString = myString.Replace ("c", String.Empty);
Run Code Online (Sandbox Code Playgroud)
你的陈述
myString.Replace ('c', '\0')
Run Code Online (Sandbox Code Playgroud)
不会删除任何字符。它只会用'\0'
(End-Of-String, EOS)替换它们,结果各不相同。遇到 EOS 时,某些字符串操作可能会停止,但在 .NET 中,大多数操作会将其视为任何其他字符。最好尽量避免'\0'
。
Joe*_*Joe 80
与字符串不同,字符是具有固定大小的离散事物.字符串实际上是字符的容器.
所以,Char.Empty在这种情况下并没有真正意义.如果你有一个char,它不是空的.
Not*_*sxl 10
如果您不需要整个字符串,则可以利用延迟执行:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
Run Code Online (Sandbox Code Playgroud)
你甚至可以组合多个角色......
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
Run Code Online (Sandbox Code Playgroud)
...并且只评估前7个字符:)
编辑:或者,甚至更好:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char[] removingChars)
{
return originalString.Except(removingChars);
}
}
Run Code Online (Sandbox Code Playgroud)
及其用法:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
Run Code Online (Sandbox Code Playgroud)
同样的原因没有int.Empty
.容器可以是空的.标量值不能.如果你的意思是0(这不是空的),那么使用'\0'
.如果你的意思是null
,那么使用null
:)
不是您问题的答案,而是表示char
您可以使用的默认值
default(char)
Run Code Online (Sandbox Code Playgroud)
与 相同char.MinValue
又与 相同\0
。但是,不应将它用于诸如空字符串之类的东西。
myString = myString.Replace('c'.ToString(), "");
Run Code Online (Sandbox Code Playgroud)
好的,这对于删除字母来说不是特别好用,因为.Replace方法有一个采用字符串参数的重载。但这可以删除回车符,换行符,制表符等。此示例删除了制表符:
myString = myString.Replace('\t'.ToString(), "");
Run Code Online (Sandbox Code Playgroud)