如何在字符串的字符之间插入空格

时间:2011-03-29 09:24:49

标签: c#

是否有一种简单的方法可以在字符串的字符之间插入空格?我正在使用下面带有字符串的代码(例如(UI $ .EmployeeHours * UI.DailySalary)/(Month))。由于此信息来自Excel工作表,我需要为每个列名插入[]。如果用户避免在每个paranthesis之后给出空格以及操作符,则会出现问题。 AnyOne有帮助吗?

      text = e.Expression.Split(Splitter);
      string expressionString = null;
      for (int temp = 0; temp < text.Length; temp++)
                        {
                            string str = null;
                            str = text[temp];
                            if (str.Length != 1 && str != "")
                            {
                                expressionString = expressionString + "[" + text[temp].TrimEnd() + "]";
                            }
                            else
                                expressionString = expressionString + str;

                        }

用户可能正在输入类似(UI $ .SlNo-UI + UI $ .Task) - (UI $ .Responsible_Person * UI $ .StartDate),而我想要的输出是([UI $ .SlNo-UI] + [ UI $ .Task]) - ([UI $ .Responsible_Person] * [UI $ .StartDate])

4 个答案:

答案 0 :(得分:8)

这是在字符串中的每个字符后插入空格的简短方法(我知道这不是你要求的):

var withSpaces = withoutSpaces.Aggregate(string.Empty, (c, i) => c + i + ' ');

这会生成一个与第一个字符串相同的字符串,除了每个字符后面都有一个空格(包括最后一个字符)。

答案 1 :(得分:3)

你可以用正则表达式来做到这一点:

using System.Text.RegularExpressions;
class Program {
    static void Main() {
        string expression = "(UI$.SlNo-UI+UI$.Task)-(UI$.Responsible_Person*UI$.StartDate) ";
        string replaced = Regex.Replace(expression, @"([\w\$\.]+)", " [ $1 ] ");
    }
}

如果你不熟悉正则表达式,这可能看起来很神秘,但它们是一个强大的工具,值得学习。万一,您可以查看regular expressions的工作方式,并使用Expresso之类的工具来测试您的正则表达式。

希望这会有所帮助......

答案 2 :(得分:1)

这是一种不使用正则表达式的算法。

//Applies dobule spacing between characters
public static string DoubleSpace(string s)
{
    if (string.IsNullOrEmpty(s))
    {
        return string.Empty;
    }

    char[] a = s.ToCharArray();
    char[] b = new char[ (a.Length * 2) - 1];

    int bIndex = 0;
    for(int i = 0; i < a.Length; i++)
    {
        b[bIndex++] = a[i];

        //Insert a white space after the char
        if(i < (a.Length - 1))
        {
            b[bIndex++] = ' ';
        }
    }

    return new string(b);
}

答案 3 :(得分:0)

好吧,你可以通过使用正则表达式,搜索特定的paterns并在需要的地方添加括号来完成此操作。您也可以简单地用相同的Paranthesis替换每个Paranthesis但每端都有空格。

我还建议您使用StringBuilder而不是附加到现有字符串(这会为每个操作创建一个新字符串,StringBuilder在执行此类操作时具有较小的内存占用量)