C# - 添加到每个文本框行的内容,直到特定字符

时间:2015-10-26 19:59:57

标签: c# regex

所以,我正在开发一个代码美化器,我需要一些帮助。

如果有一个左括号{,我希望之后的每一行在它们前面有4个空格,直到结束括号}。我已经设法使用string.Replace("{", "{" + Environment.NewLine + " ")完成了该行,但这还不够。

另外,我如何处理分号;,因为有时它们后面有空格,有时候没有空格。我可以这样做:string.Replace(";", ";" + Environment.NewLine,但是当分号后面有空格时,空格会移到第二行,所以它看起来很糟糕,我可以查看;; *space*和替换两者,但如果有空格则会创建一个空行。

感谢您的帮助,如果我的解释可以理解,请发信,但我希望您知道我的意思:D

3 个答案:

答案 0 :(得分:1)

您将需要一个嵌套计数器,因此您将在开头引入4个空格,与嵌套计数器中指示的次数一样多。

每次找到角色时都应该增加计数器' {'当你找到'}时减少它。此外,我确保这些弧形括号不会被引号括起来,因此它们是实际代码,并且它们不属于某些字符串。

关于分号,您应该尝试: Regex regex = new Regex(";\\s*"); regex.Replace(string, ";" + Environment.NewLine);

答案 1 :(得分:1)

关于第一个问题,请尝试以下方法:

while(!lines[i].Contains("}")) {
    lines[i].Insert(0,"    ");
    i++;
}

如果你想处理多个花括号,你可以这样做:

int level;
for(int i = 0; i < lines.Length; i++) {
    if(lines[i].Contains("{") level++;
    if(lines[i].Contains("}") level--;
    for(int j = 0; j < level; j++) lines[i].Insert(0, "    ");
}

对于您的第二个问题,我认为这是您的运营顺序的问题。如果用分号+换行符替换分号,则会将空格带到下一行。如果你用分号+空格替换分号+换行符然后用分号替换分号+换行符你将有双行。你想要做的是用分号替换分号+空格(即删除所有空格),然后用分号替换分号+断行。

希望有所帮助

答案 2 :(得分:0)

  1. 查找所有;并进行换行。
  2. 删除所有尾随空格。
  3. 做Pol建议的步骤。