Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-将内容添加到每个文本框行,直到指定字符_C#_Regex - Fatal编程技术网

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个空格的方法,但有很多方法,我的方法不是很明显。我还修复了关于分号的示例,它混合了正则表达式和标准字符串替换谢谢