删除多个空格,c#

时间:2013-07-31 08:44:35

标签: c# whitespace

我正在尝试做的是尝试将空格大小减少到1个字符(删除任何不需要的空格。我该如何处理这个任务?

PS:没有正则表达式

编辑:谢谢,已经成功,感谢分裂+加入建议。不幸的是,无法提出任何回应,因为沮丧的青少年已经让我误解了“对网站来说这个问题太简单了”

EDIT2。:如果有句子,请如何确保它不会删除句子前面的空格?

4 个答案:

答案 0 :(得分:5)

怎么样?
string.Join(" ", 
   myString.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))

修改

作为扩展名

    public static string RemoveWhiteSpaces(this string s)
    {
        return string.Join(" ", s.Split(new char[] { ' ' }, 
               StringSplitOptions.RemoveEmptyEntries));
    }
myString.RemoveWhiteSpaces();

答案 1 :(得分:4)

字符串类的扩展名

public static string RemoveExcessSpaces(this string str)
{
    StringBuilder sb = new StringBuilder(str.Length);
    bool first = true;
    for (int i = 0; i < str.Length; i++)
    {
        char c = str[i];
        switch (c)
        {
            case '\r':
            case '\n':
            case '\t':
            case ' ':
                if(first)
                {
                    sb.Append(c);
                    first = false;
                }
                else
                    continue;
                break;
            default:
                sb.Append(c);
                first = true;
                break;
        }
    }
    return sb.ToString();
}

调用它
string result = "This is   a   test whit \t\t\r\n    multiple spaces";
result = result.RemoveExcessSpaces();

Giving credit to the original idea

当然,应该被视为空格的字符集可以通过字符列表来定义(或使用Char.IsWhiteSpace)但是这可能对性能更好

答案 2 :(得分:1)

您可以使用此代码:

public static String WhiteSpaceReducer(String value) {
  if (String.IsNullOrEmpty(value))
    return value;

  Boolean wasWhiteSpace = false;
  StringBuilder Sb = new StringBuilder();

  foreach (Char Ch in value) 
    if (Char.IsWhiteSpace(Ch)) {
      if (!wasWhiteSpace)
        Sb.Append(Ch);

      wasWhiteSpace = true;
    }
    else {
      wasWhiteSpace = false;
      Sb.Append(Ch);
    }

  return Sb.ToString();
}


...

String test = "   test   me  out  ";
String result = WhiteSpaceReducer(test);

答案 3 :(得分:0)

你这样做

string myString = "I'm too            lazy for research.";
myString = Regex.Replace(myString, @"\s+", " ");