我正在寻找Xcode内的正则表达式替换,允许我删除所有空白&];
我必须承认我不喜欢正则表达式。我得到了S(s+)];
…但Xcode似乎没有发现任何];
在新行上的情况。
下面是我想要修改的两个例子:
[self methodWithBlock:^(){
} ];
[self methodWithBlock:^(){
}
];
:
[self methodWithBlock:^(){
}];
那些格式不好的块是学习不整合的结果。div;)
当我遇到这样的问题时(即Xcode不会跨多行执行正则表达式),我很高兴我总是可以弹出到终端并使用命令行。
在您最喜欢的文本编辑器中创建以下内容…我们叫它ununcrustify.pl
#!/usr/bin/perl
$/ = undef;
$file = <>;
$file =~ s/}s+]/}]/g;
print $file;
不要忘记使文件可执行(chmod o+x ununcrustify.pl
)。
现在./ununcrustify.pl filename.m
将在标准输出中输出处理过的文件。将其重定向到临时文件。请确保您满意,然后替换旧文件。
如果你有很多文件要处理,我怀疑这将比你提出的多步骤解决方案更有效。
工作原理
$/ = undef;
取消定义行结束分隔符,这会导致$file = <>;
将整个文件作为一个长字符串读入内存,允许$file =~ s/}s+]/}]/g;
将整个文件作为一个长字符串进行操作,最后print $file;
将所有这些优点打印出来。
由于Xcode不能跨多行执行正则表达式,所以我将其分成几个步骤。
首先使用正则表达式搜索&替换为(s+)];
,我移动了[;到行首
然后我使用文本搜索中的Alt+Return技巧来搜索任何[;前面有个换行符。在做了这个搜索之后&全部替换三倍];