【发布时间】:2011-07-28 04:38:44
【问题描述】:
在Xcode项目中,我们一般在编写程序时不注意行距。
那么在编码完成后,如何用单行删除所有多余的换行符?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch xcode
在Xcode项目中,我们一般在编写程序时不注意行距。
那么在编码完成后,如何用单行删除所有多余的换行符?
【问题讨论】:
标签: iphone objective-c cocoa cocoa-touch xcode
在文本搜索字段中...可以使用以下方法进行多行/“非打印字符”搜索/替换...
假设我想替换
的所有实例/**
* This is a comment...
与
/** This is a comment...
“搜索词”将输入为...
/**Alt/Option + Enter空格*空格
并且替换项将简单地输入为...
/**Alt/Option + Tab
故事的寓意..当您想在搜索/替换字段中使用用于替代目的的字符时...将修饰符 Alt/Option 与他们的条目结合起来使用它们“字面意思”。
【讨论】:
XCode 的查找和替换不支持多行正则表达式。
如果您想搜索多行,您需要将搜索选项设置为“文本”,然后键入 option+return 两次或复制/粘贴两个新行字符。然后用一个新行字符替换。
更多信息请参见here。
【讨论】:
我通过使用临时字符串来解决这个问题。我的问题有点不同,我想找到接口中属性和方法声明之间没有空行的任何地方,如下所示:
@property (nonatomic) NSBlah *someThing;
- (id)someMethodThing;
并替换为:
@property (nonatomic) NSBlah *someThing;
- (id)someMethodThing;
为了做到这一点,我用这个来查找使用多行:
@property(.*)\n([-+].*)
然后我用一些文本字符串代替了换行符:
@property$1SOMETHINGWHATEVER123$2
然后,我关闭了正则表达式替换,并用常规文本替换,替换:
SOMETHINGWHATEVER123
使用 Xcode 的换行符,您可以通过单击放大镜选择“插入模式”来找到它(这是在 Xcode 7 中):
然后用两个换行符替换 SOMETHINGWHATEVER123,从而处理我的多行正则表达式查询。
不确定这对您的情况有多直接适用,因为它已经很老了,但我在这里找到了自己的方式,所以也许其他人可能会!
【讨论】:
现代 Xcode(从 Xcode 11 开始编写)确实支持多行正则表达式。只需在. 之前添加(?s) 修饰符即可执行此类搜索,例如:
Codable(?s).*rawValue 将搜索以Codable 开头并以rawValue 结尾的文本块,无论它们跨越多少行。
【讨论】: