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