我们在C#开发过程中经常会碰到去除空格的问题,去除两边空格用Trim()就可以了,那怎样把中间的连续的多个空格替换为一个空格呢?很多人肯定想到用循环按字符区分判断,如下:

  public string GetFields(string strWords)

  {

  StringBuilder sb = new StringBuilder();

  string[] str = strWords.Split(' ');

  for (int i = 0; i < strWords.Length; i++)

  {

  if (str[i] != "")

  {

  sb.Append(str[i].ToString().Trim());

  }

  }

  return sb.ToString();

  }

  最终会得到结果:“1 2 34 5”.此处用StringBuilder 而不用+来拼接是为节省内存。这样虽然结果是正确的,如果替换一篇文章的话肯定是不效率的,下面介绍一种高效的方式,那就是用正则,代码如下:

  public string GetFields(string strWords)

  {

  Regex replaceSpace = new Regex(@"\s{2,}",RegexOptions.IgnoreCase);

  return replaceSpace.Replace(strWords, " ").Trim();

  }

  最终也会得到上面的结果,此处\s代表空格,{2,}代表2个以上的连续空格,RegexOptions.IgnoreCase代表不区分大小写。你明白了?方法就是如此简单高效。