-2

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

PS.:没有正则表达式

编辑:谢谢,已经成功,感谢拆分+加入的建议。不幸的是,由于沮丧的青少年已经向我发送垃圾邮件,因为我问“一个对网站来说太简单的问题”,因此无法对任何回复进行投票

EDIT2 .: 我如何确保它不会删除句子前面的空格,以防万一?

4

4 回答 4

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();
于 2013-07-31T08:55:10.167 回答
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();

归功于最初的想法

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

于 2013-07-31T08:51:53.253 回答
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);
于 2013-07-31T09:03:38.283 回答
0

你这样做

string myString = "I'm too            lazy for research.";
myString = Regex.Replace(myString, @"\s+", " ");
于 2013-07-31T08:48:51.587 回答