【发布时间】:2011-11-15 01:03:23
【问题描述】:
是否有 string 类成员函数(或其他)用于从字符串中删除所有空格?类似于 Python 的 str.strip() ?
【问题讨论】:
-
只是空格字符还是所有空格? Python 的
strip默认会删除空格 -
我要删除所有空格。
标签: c# .net string standard-library
是否有 string 类成员函数(或其他)用于从字符串中删除所有空格?类似于 Python 的 str.strip() ?
【问题讨论】:
strip 默认会删除空格
标签: c# .net string standard-library
我很惊讶没有人提到这一点:
String.Join("", " all manner\tof\ndifferent\twhite spaces!\n".Split())
string.Split 默认情况下会沿着 char.IsWhiteSpace 的字符拆分,因此这是一个非常相似的解决方案,通过直接使用 char.IsWhiteSpace 过滤掉这些字符,它是一种适用于预 LINQ 环境的单行器也是。
【讨论】:
有许多不同的方法,有些比其他更快:
public static string StripTabsAndNewlines(this string s) {
//string builder (fast)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < str.Length; i++) {
if ( ! Char.IsWhiteSpace(s[i])) {
sb.Append();
}
}
return sb.tostring();
//linq (faster ?)
return new string(input.ToCharArray().Where(c => !Char.IsWhiteSpace(c)).ToArray());
//regex (slow)
return Regex.Replace(s, @"\s+", "")
}
【讨论】:
剥离空间?去掉空格?为什么要重要?仅在我们搜索现有实现时才重要,但我们不要忘记编程解决方案而不是搜索 MSDN 是多么有趣(无聊)。
您应该能够使用以下 2 个函数中的 1 个从任何字符串中删除任何字符。
你可以像这样删除任何字符
static string RemoveCharsFromString(string textChars, string removeChars)
{
string tempResult = "";
foreach (char c in textChars)
{
if (!removeChars.Contains(c))
{
tempResult = tempResult + c;
}
}
return tempResult;
}
或者您可以像这样强制执行字符集(可以这么说)
static string EnforceCharLimitation(string textChars, string allowChars)
{
string tempResult = "";
foreach (char c in textChars)
{
if (allowChars.Contains(c))
{
tempResult = tempResult + c;
}
}
return tempResult;
}
【讨论】:
String.Trim 方法删除尾随和前导空格。它是 Python 的 strip 方法的功能等价物。
【讨论】:
LINQ 在这里感觉有点矫枉过正,将字符串转换为列表,过滤列表,然后将其转换回字符串。为了删除所有空格,我会使用正则表达式。 Regex.Replace(s, @"\s", "")。这是一个常见的习语,可能已经过优化。
【讨论】:
你可以这样做:
myString = myString.Replace(" ", "");
如果你想删除 所有 个空格字符,你可以使用 Linq,即使语法对于这个用例来说不是很吸引人:
myString = new string(myString.Where(c => !char.IsWhiteSpace(c)).ToArray());
【讨论】:
如果您希望根据 .NET 对什么是空格的判断来替换字符串中的 all 空格(不仅仅是前导和尾随空格),您可以使用一个非常简单的 LINQ 查询来让它工作。
string whitespaceStripped = new string((from char c in someString
where !char.IsWhiteSpace(c)
select c).ToArray());
【讨论】:
你可以使用
StringVariable.Replace(" ","")
【讨论】:
是的,String.Trim()。
var result = " a b ".Trim();
在result 中给出"a b"。默认情况下,所有空格都会被修剪。如果你只想删除空格,你需要输入
var result = " a b ".Trim(' ');
如果要删除字符串中的所有个空格,可以使用string.Replace()。
var result = " a b ".Replace(" ", "");
在result 中给出"ab"。但这并不等同于 Python 中的str.strip()。
【讨论】:
是的,修剪。
String a = "blabla ";
var b = a.Trim(); // or TrimEnd or TrimStart
【讨论】:
我对 Python 了解不多……
如果 str.strip() 只是删除开头和结尾的空格,那么您可以在 .NET 中使用 str = str.Trim()... 否则您可以只使用 str = str.Replace ( " ", "") 删除所有空格。
如果它删除所有空格然后使用
str = (from c in str where !char.IsWhiteSpace(c) select c).ToString()
【讨论】:
如果您想删除字符串前面或结尾处的空格,您可能需要查看 TrimStart() 和 TrimEnd() 和 Trim()。
【讨论】: