C#-将内容添加到每个文本框行,直到指定字符
所以,我正在做一个代码美化器,我需要一些帮助 当有一个开始的括号时,C#-将内容添加到每个文本框行,直到指定字符,c#,regex,C#,Regex,所以,我正在做一个代码美化器,我需要一些帮助 当有一个开始的括号时,{我希望其后的每一行前面都有4个空格,直到结束的括号。我已经用string.Replace(“{”,“{+Environment.NewLine+”)为后面的行完成了这项工作,但这还不够 还有,我如何处理分号,因为有时分号后面有空格,有时没有。我可以这样做:string.Replace(“;”,“;”+Environment.NewLine,但当分号后面有空格时,空格会移到第二行,因此看起来很糟糕,我可以检查;和;*空格*并将两
{
我希望其后的每一行前面都有4个空格,直到结束的括号。我已经用string.Replace(“{”,“{+Environment.NewLine+”)
为后面的行完成了这项工作,但这还不够
还有,我如何处理分号,因为有时分号后面有空格,有时没有。我可以这样做:string.Replace(“;”,“;”+Environment.NewLine
,但当分号后面有空格时,空格会移到第二行,因此看起来很糟糕,我可以检查;
和;*空格*
并将两者替换,但如果有空格,它会创建一个空行
谢谢你的帮助,idk,如果我的解释可以理解的话,但是我希望你知道我的意思:D你需要一个嵌套计数器,因此你将在开始时引入4个空格,次数与嵌套计数器中指示的次数相同 您应该在每次找到字符“{”时增加计数器,在找到“}”时减少计数器。此外,我还要确保这些曲线括号没有被引号包围,因此它们是实际代码,不属于某个字符串 关于分号,您只需尝试:
Regex Regex=new Regex(“;\\s*”);
regex.Replace(字符串“;”+Environment.NewLine);
对于第一个问题,请尝试以下方法:
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, " ");
}
如果要处理多个级别的花括号,可以执行以下操作:
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, " ");
}
int级;
对于(int i=0;i
关于你的第二个问题,我认为这是操作顺序的问题。如果你用分号+换行符替换分号,你将把空格带到下一行。如果你用分号+空格替换分号+换行符,然后用分号+换行符替换分号,你将有两行。你想做什么要做的是用分号+空格替换分号(即删除所有空格),然后用分号+换行符替换分号
希望能有帮助
;
并换行有什么理由你不想使用现有的格式而想自己做这件事吗?编写一个好的代码格式化程序,不仅仅是扫描直到找到大括号等等(比如,想想注释和字符串文本中的大括号)这可能不是一种可以以一种简单的方式来完成的事情。合理的是,必须考虑字符串和注释…<代码> > >的相关性是:输入开始的正则表达式符号。在这种情况下,它将是文本框行的开始。抱歉,我不能让您重新使用ReXEX的文本。想在上下文中显示
计数器
单词的正则表达式示例。您好,您是对的,它非常混乱,我只是举例说明在字符串开头插入4个空格的方法,但有很多方法,我的方法不是很明显。我还修复了关于分号的示例,它混合了正则表达式和标准字符串替换谢谢