2011-03-29 262 views
3

有没有简单的方法在字符串的字符之间插入空格?我使用下面的代码接受一个字符串(例如(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 $。任务) - (UI $ .Responsible_Person * UI $ .StartDate),而我期望的输出是([UI $ .SlNo- (UI $ .Responsible_Person)* [UI $ .StartDate])

+4

请给我一个输入和期望输出的例子,然后我可能会明白你需要做什么。 – IanT8 2011-03-29 09:29:27

+0

我更新了它。请检查 – NewBie 2011-03-29 09:55:45

+0

不能清楚地理解你的问题,但为什么你没有在代码中的括号前后添加额外的空格。将“[”替换为“[”等。 – 2011-03-29 09:57:59

回答

0

那么,你可以通过使用正则表达式,搜索特定的paterns并在需要的地方添加括号。您也可以简单地将每个Paranthesis替换为相同的Paranthesis,但每个端点都有空格。

我也建议你使用StringBuilder的藏汉而不是附加到现有的字符串(这会为每个操作一个新的字符串,StringBuilder的有做这种操作时更小的内存占用)

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的工具来测试您的正则表达式。

希望这有助于...

8

这里是插入字符串中的每一个字符后的空间(我知道是你问的不正是为)一小段路:

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

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

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); 
} 
相关问题