如何从字符串中删除空格?

时间:2013-04-16 10:41:46

标签: c# string

我有一个字符串值

string text = "-----------------\r\n      Some text here      Some text here\r\n"

有没有办法在每个有多个空格的地方删除2个空格?

谢谢你的帮助

11 个答案:

答案 0 :(得分:5)

您可以使用正则表达式。

var result = new Regex("\s{2,}").Replace(text,constForWhiteSpace)

答案 1 :(得分:2)

Regex regex = new Regex(@"[ ]{2,}");    // Regex to match more than two occurences of space 
text = regex.Replace(text, @"");

答案 2 :(得分:1)

编辑:这是为了速度,否则正如其他答案所建议的正则表达式一样。这个功能非常快。

编辑2:如果你想保留新的行,只需删除\ r \ n。

        public static String SingleSpacedTrim(String inString)
        {
            StringBuilder sb = new StringBuilder();
            Boolean inBlanks = false;
            foreach (Char c in inString)
            {
                switch (c)
                {
                    case '\r':
                    case '\n':
                    case '\t':
                    case ' ':
                        if (!inBlanks)
                        {
                            inBlanks = true;
                            sb.Append(' ');
                        }   
                        continue;
                    default:
                        inBlanks = false;
                        sb.Append(c);
                        break;
                }
            }
            return sb.ToString().Trim();
        }

答案 3 :(得分:1)

这是你在找什么?

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

答案 4 :(得分:0)

如果您知道有多少个空格,可以使用

text.Replace("       ", "     ");

答案 5 :(得分:0)

试试这个:

var result = new Regex("\s{2,}").Replace(text,string.Empty)

答案 6 :(得分:0)

试试吧......

   string _str = "-----------------\r\n      Some text here      Some text here\r\n";
    _str = _str.Trim();
    Console.WriteLine(_str.Replace(" ",""));

输出:
SometexthereSometexthere

答案 7 :(得分:0)

var dirty = "asdjk    asldkjas dasdl l aksdjal;sd            asd;lkjdaslj";

var clean = string.Join(" ", dirty.Split(' ').Where(x => !string.IsNullOrEmpty(x)));

答案 8 :(得分:0)

如果你不喜欢正则表达式或文字很大,你可以使用这个扩展名:

public static String TrimBetween(this string text, int maxWhiteSpaces = 1)
{
    StringBuilder sb = new StringBuilder();
    int count = 0;
    foreach (Char c in text)
    {
        if (!Char.IsWhiteSpace(c))
        {
            count = 0;
            sb.Append(c);
        }
        else
        {
            if (++count <= maxWhiteSpaces)
                sb.Append(c);
        }
    }
    return sb.ToString();
}

然后很简单:

string text = "-----------------\r\n      Some text here      Some text here\r\n";
text = text.TrimBetween(2);

结果:

-----------------
Some text here  Some text here

答案 9 :(得分:0)

不是最好的一段代码,但如果你想使用正则表达式,这应该从文本中删除两个空格。

//one.two..three...four....five..... (dots = spaces)
string input = "one two  three   four    five     ";

string result = new Regex(@"\s{2,}").Replace(input, delegate(Match m)
{    
    if (m.Value.Length > 2)
    {    
        int substring = m.Value.Length - 2;
        //if there are two spaces, just remove the one
        if (m.Value.Length == 2) substring = 1;

        string str = m.Value.Substring(m.Value.Length - substring);
        return str;
    }
    return m.Value;
});

输出

//dots represent spaces. Two spaces are removed from each one but one 
//unless there are two spaces, in which case only one is removed.
one.two.three.four..five...

答案 10 :(得分:-1)

您可以使用String.Replace函数:

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

但请记住,你应该在发布之前研究一下你的要求:这是非常基本的东西。