c# – 在字符串中冒号之间添加空格

预期的用户输入:

Apple : 100

Apple:100

Apple: 100

Apple :100

Apple   :   100

Apple  :100

Apple:  100

预期结果:

Apple : 100

冒号之间只需要一个空格:

码:

 string input = "Apple:100";

 if (input.Contains(":"))
 {
    string firstPart = input.Split(':').First();

    string lastPart = input.Split(':').Last();

    input = firstPart.Trim() + " : " + lastPart.Trim();
 }

上面的代码使用Linq,但是有没有更短或更高效的代码以及性能?

任何帮助,将不胜感激.

最佳答案
你可以用这个衬垫:

input = string.Join(" : ", input.Split(':').Select(x => x.Trim()));

这比分裂两次更有效.但是,如果您想要更高效的解决方案,可以使用StringBuilder:

var builder = new StringBuilder(input.Length);
char? previousChar = null;
foreach (var ch in input)
{
    // don't add multiple whitespace
    if (ch == ' ' && previousChar == ch)
    {
        continue;
    }

     // add space before colon
     if (ch == ':' && previousChar != ' ')
     {
         builder.Append(' ');
     }

     // add space after colon
     if (previousChar == ':' && ch != ' ')
     {
          builder.Append(' ');
     }


    builder.Append(ch);
    previousChar = ch;
}

编辑:正如@Jimi的评论中提到的那样,foreach版本比LINQ慢.

转载注明原文:c# – 在字符串中冒号之间添加空格 - 代码日志