这有什么原因吗?我问这个问题是因为如果你需要使用大量的空字符,那么你就会陷入与你使用大量空字符串时相同的情况。
编辑:这种用法的原因是:
myString.Replace ('c', '')
所以从myString中移除所有的'c'实例。
这有什么原因吗?我问这个问题是因为如果你需要使用大量的空字符,那么你就会陷入与你使用大量空字符串时相同的情况。
编辑:这种用法的原因是:
myString.Replace ('c', '')
所以从myString中移除所有的'c'实例。
当前回答
还可以逐字符重新构建字符串,排除想要删除的字符。
下面是一个扩展方法:
static public string RemoveAny(this string s, string charsToRemove)
{
var result = "";
foreach (var c in s)
if (charsToRemove.Contains(c))
continue;
else
result += c;
return result;
}
它既不圆滑也不花哨,但效果很好。
像这样使用:
string newString = "My_String".RemoveAny("_"); //yields "MyString"
其他回答
如果你不需要整个字符串,你可以利用延迟执行:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChar(this IEnumerable<char> originalString, char removingChar)
{
return originalString.Where(@char => @char != removingChar);
}
}
你甚至可以组合多个字符……
string veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChar('c')
.RemoveChar('d')
.Take(5);
... 并且只计算前7个字符:)
编辑:或者更好:
public static class StringExtensions
{
public static IEnumerable<char> RemoveChars(this IEnumerable<char> originalString,
params char[] removingChars)
{
return originalString.Except(removingChars);
}
}
及其用法:
var veryLongText = "abcdefghijk...";
IEnumerable<char> firstFiveCharsWithoutCsAndDs = veryLongText
.RemoveChars('c', 'd')
.Take(5)
.ToArray(); //to prevent multiple execution of "RemoveChars"
就c#语言而言,以下内容可能没有多大意义。这并不是对这个问题的直接回答。但下面是我在一个业务场景中所做的。
char? myCharFromUI = Convert.ToChar(" ");
string myStringForDatabaseInsert = myCharFromUI.ToString().Trim();
if (String.IsNullOrEmpty(myStringForDatabaseInsert.Trim()))
{
Console.Write("Success");
}
在我的项目中,空白和空白具有不同的业务流。而插入到数据库,我需要插入空字符串到数据库,如果它是空白。
myString = myString.Replace('c'.ToString(), "");
好吧,这对于删除字母来说不是特别优雅,因为. replace方法有一个接受字符串参数的重载。但这适用于删除回车符、换行符、制表符等。下面的例子删除了制表符:
myString = myString.Replace('\t'.ToString(), "");
使用Char。MinValue,它的工作原理与“\0”相同。但要注意它与String.Empty不同。
和这里没有int。empty的原因一样。容器可以为空,标量值不能为空。如果你的意思是0(它不是空的),那么使用'\0'。如果你的意思是null,那么使用null:)