例如,如果我想从字符串中删除空白和尾随逗号,我可以这样做:
String x = "abc,\n";
x.Trim().Trim(new char[] { ',' });
正确输出abc
。我可以轻松地将它包装在扩展方法中,但我想知道是否有一种内置的方法可以通过单次调用我Trim()
来实现这一点。我已经习惯了Python,我可以这样做:
import string
x = "abc,\n"
x.strip(string.whitespace + ",")
The documentation声明所有Unicode whitespace characters,除了少数例外情况,都会被删除(请参阅来自来电者的说明部分),但我想知道是否有办法如果不在扩展方法中手动定义字符数组,请执行此操作。
有没有内置的方法来做到这一点?我想要删除的非空白字符数可能会有所不同,并且不一定包含逗号,我想删除所有空格,而不仅仅是\n
。
答案 0 :(得分:4)
是的,你可以这样做:
x.Trim(new char[] { '\n', '\t', ' ', ',' });
因为换行技术上是一个字符,所以你可以将它添加到数组中,避免两次调用Trim
。
修改强>
.NET 4.0使用this method来确定字符是否被视为空格。早期版本维护一个空格字符的内部列表(Source)。
如果您真的只想使用一个Trim
电话,那么您的应用可以执行以下操作:
Char.IsWhiteSpace
。现在,您可以通过传递您构建的数组来使用单个Trim
调用。
我猜测Char.IsWhiteSpace
取决于当前的区域设置,因此您必须特别注意区域设置。
答案 1 :(得分:4)
使用正则表达式可以很简单:
text = Regex.Replace(text, @"^[\s,]+|[\s,]+$", "");
这也将匹配Unicode空格字符。
答案 2 :(得分:1)
您可以使用以下Strip Extension方法
public static class ExtensionMethod
{
public static string Strip(this string str, char[] otherCharactersToRemove)
{
List<char> charactersToRemove = (from s in str
where char.IsWhiteSpace(s)
select s).ToList();
charactersToRemove.AddRange(otherCharactersToRemove);
string str2 = str.Trim(charactersToRemove.ToArray());
return str2;
}
}
然后你可以这样称呼它:
static void Main(string[] args)
{
string str = "abc\n\t\r\n , asdfadf , \n \r \t";
string str2 = str.Strip(new char[]{','});
}
输出将是:
str2 = "abc\n\t\r\n , asdfadf"
Strip Extension方法将首先从列表中的字符串中获取所有WhiteSpace字符。在列表中添加要删除的其他字符,然后在其上调用trim。