【问题标题】:how to replace multi new line with single new line in Xcode using Find & Replace如何使用查找和替换在 Xcode 中用单个新行替换多个新行
【发布时间】:2011-07-28 04:38:44
【问题描述】:

在Xcode项目中,我们一般在编写程序时不注意行距。

那么在编码完成后,如何用单行删除所有多余的换行符?

【问题讨论】:

    标签: iphone objective-c cocoa cocoa-touch xcode


    【解决方案1】:

    在文本搜索字段中...可以使用以下方法进行多行/“非打印字符”搜索/替换...

    假设我想替换

    的所有实例
    /**
     * This is a comment...
    

    /**  This is a comment...
    

    “搜索词”将输入为...

    /**Alt/Option + Enter空格*空格

    并且替换项将简单地输入为...

    /**Alt/Option + Tab

    故事的寓意..当您想在搜索/替换字段中使用用于替代目的的字符时...将修饰符 Alt/Option 与他们的条目结合起来使用它们“字面意思”。

    【讨论】:

    • 感谢您的帮助:)
    【解决方案2】:

    XCode 的查找和替换不支持多行正则表达式。

    如果您想搜索多行,您需要将搜索选项设置为“文本”,然后键入 option+return 两次或复制/粘贴两个新行字符。然后用一个新行字符替换。

    更多信息请参见here

    【讨论】:

    • 从打开的 XCode 编辑器复制换行符并将其粘贴到替换字段中是我发现唯一可行的方法。最好的解决方案是使用 AppCode...比 XCode 功能更丰富的界面。
    • 这个答案是错误的/过时的。 Xcode 确实支持多行正则表达式。
    【解决方案3】:

    我通过使用临时字符串来解决这个问题。我的问题有点不同,我想找到接口中属性和方法声明之间没有空行的任何地方,如下所示:

    @property (nonatomic) NSBlah *someThing;
    - (id)someMethodThing;
    

    并替换为:

    @property (nonatomic) NSBlah *someThing;
    
    - (id)someMethodThing;
    

    为了做到这一点,我用这个来查找使用多行:

    @property(.*)\n([-+].*)
    

    然后我用一些文本字符串代替了换行符:

    @property$1SOMETHINGWHATEVER123$2
    

    然后,我关闭了正则表达式替换,并用常规文本替换,替换:

    SOMETHINGWHATEVER123
    

    使用 Xcode 的换行符,您可以通过单击放大镜选择“插入模式”来找到它(这是在 Xcode 7 中):

    然后用两个换行符替换 SOMETHINGWHATEVER123,从而处理我的多行正则表达式查询。

    不确定这对您的情况有多直接适用,因为它已经很老了,但我在这里找到了自己的方式,所以也许其他人可能会!

    【讨论】:

      【解决方案4】:

      现代 Xcode(从 Xcode 11 开始编写)确实支持多行正则表达式。只需在. 之前添加(?s) 修饰符即可执行此类搜索,例如:

      Codable(?s).*rawValue 将搜索以Codable 开头并以rawValue 结尾的文本块,无论它们跨越多少行。

      【讨论】:

        猜你喜欢
        • 2021-01-02
        • 2014-03-16
        • 2013-05-23
        • 2013-11-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多