有没有从字符串中删除空白字符的方法?

时间:2011-09-12 04:14:29

标签: c# .net string standard-library

是否有string类成员函数(或其他东西)用于从字符串中删除所有空格?像Python的str.strip()

之类的东西

12 个答案:

答案 0 :(得分:26)

你可以这样做:

myString = myString.Replace(" ", "");

如果要删除所有空白字符,可以使用Linq,即使语法对此用例不太有吸引力:

myString = new string(myString.Where(c => !char.IsWhiteSpace(c)).ToArray());

答案 1 :(得分:18)

String.Trim方法删除尾随和前导空格。它是Python的strip方法的功能等价物。

答案 2 :(得分:7)

LINQ在这里感觉有点过分,将字符串转换为列表,过滤列表,然后将其转回字符串。为了删除所有空格,我会去寻找正则表达式。 Regex.Replace(s, @"\s", "")。这是一个常见的习惯用语,可能已经过优化。

答案 3 :(得分:3)

如果要删除前置字符串的空格或者在结尾处,可能需要查看TrimStart()和TrimEnd()以及Trim()。

答案 4 :(得分:3)

如果您希望根据.NET确定的空格是否替换字符串中的所有空格(不仅仅是前导空格和尾随空格),您可以使用非常简单的LINQ查询让它发挥作用。

string whitespaceStripped = new string((from char c in someString
                                        where !char.IsWhiteSpace(c)
                                        select c).ToArray());

答案 5 :(得分:2)

是的,修剪。

String a = "blabla ";
var b = a.Trim(); // or TrimEnd or TrimStart

答案 6 :(得分:2)

是的,String.Trim()

var result = "   a b    ".Trim();

"a b"中提供result。默认情况下,会修剪所有空格。如果您只想删除空格,则需要输入

var result = "   a b    ".Trim(' ');

如果您要删除字符串中的所有空格,可以使用string.Replace()

var result = "   a b    ".Replace(" ", "");

"ab"中提供result。但这并不等同于Python中的str.strip()

答案 7 :(得分:1)

我对Python不太了解......

如果str.strip()只是在开头和结尾删除了空格,那么你可以在.NET中使用str = str.Trim() ...否则你只能str = str.Replace ( " ", "")删除所有空格。

如果删除所有空格,请使用

str = (from c in str where !char.IsWhiteSpace(c) select c).ToString()

答案 8 :(得分:1)

有许多不同的方式,有人比其他方式更快:

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+", "")

}

答案 9 :(得分:0)

你可以使用

 StringVariable.Replace(" ","")

答案 10 :(得分:0)

我很惊讶没有人提到这个:

String.Join("", " all manner\tof\ndifferent\twhite spaces!\n".Split())

string.Split默认情况下会按char.IsWhiteSpace字符拆分,所以这是一个非常类似的解决方案,通过直接使用char.IsWhiteSpace来过滤这些字符,它就是一个-liner也适用于LINQ之前的环境。

答案 11 :(得分:-2)

剥离空间?剥去空白?为什么重要?只有当我们正在寻找现有的实现时才重要,但是不要忘记编程解决方案的乐趣,而不是搜索MSDN(无聊)。

您应该可以使用以下两个函数中的一个来删除任何字符串中的任何字符。

你可以删除任何类似的字符

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;
}
相关问题