Xcode 正则表达式替换为替换"<any number of whitespace>];"



我正在寻找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技巧来搜索任何[;前面有个换行符。在做了这个搜索之后&全部替换三倍];

相关内容

最新更新