是否有一种简单的方法可以在字符串的字符之间插入空格?我正在使用下面带有字符串的代码(例如(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])
答案 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在执行此类操作时具有较小的内存占用量)