Emp*_*ack 43 iphone xcode objective-c ios
我在班上的几个地方都有以下函数调用.
[myClass doOperationOne];
[myClass doOperationTwo];
[myClass doOperationThree];
Run Code Online (Sandbox Code Playgroud)
在这些行中,我想搜索以下内容,
[myClass doOperationOne
[myClass doOperationTwo
[myClass doOperationThree
Run Code Online (Sandbox Code Playgroud)
并用以下内容替换它们(通过附加WithOptions:[Permissions isOptionsAvailable])
[myClass doOperationOneWithOptions:[Permissions isOptionsAvailable]];
[myClass doOperationTwoWithOptions:[Permissions isOptionsAvailable]];
[myClass doOperationThreeWithOptions:[Permissions isOptionsAvailable]];
Run Code Online (Sandbox Code Playgroud)
如何使用单个正则表达式查找/替换来执行此操作?
Kal*_*lle 63
注意:Xcode 6中的行为已更改.\ 123语法已替换为$ 123.还要注意,现在可以在reg exps中匹配换行符,所以一定要在Replace-Alling之前略过
在方法中添加其他参数:
取代
[* setFoo:*]
Run Code Online (Sandbox Code Playgroud)
同
[* setFoo:* bar:value]
Run Code Online (Sandbox Code Playgroud)
你做
(setFoo:)(.*)(\])
$1$2 bar:value]
Run Code Online (Sandbox Code Playgroud)
(分别搜索字符串和替换字符串).
或者,如果在Xcode 5或更早版本
(setFoo:)(.*)(\])
\1\2 bar:value]
Run Code Online (Sandbox Code Playgroud)
(下面使用新语法;如果在Xcode 5或更早版本上交换)
注意:此处所写的所有内容均适用于NSString/ NSMutableString使用时的字符串替换方法NSRegularExpressionSearch!
换句话说,这一行:
[input replaceOccurrencesOfString:@"\n\\[([^\\]^\n]*)\\]\n"
withString:@"\n///\n\n[$1]\n"
options:NSRegularExpressionSearch
range:(NSRange){0,input.length}];
Run Code Online (Sandbox Code Playgroud)
将所有"[...]\n"序列(例如"[...\n..."单独留下!)转换为使用$ 1 "\n///\n\n[...]\n"保留....
总是这样做,但在这种情况下,我添加了一个可选的'animate:'标志,到目前为止的默认值是YES,但我想要NO,所以每次调用都必须更新.
更多例子:
dismissModalViewControllerAnimated:... 弃用
要修复已弃用的dismissModalViewController替换它,请使用空的完成块并保留动画值:
(dismissModalViewControllerAnimated:)(.*)(\])
dismissViewControllerAnimated:$2 completion:nil]
Run Code Online (Sandbox Code Playgroud)
presentModalViewController:animated: 弃用
(presentModalViewController:)(.*)( animated:)(.*)(\])
presentViewController:$2$3$4 completion:nil]
Run Code Online (Sandbox Code Playgroud)
PD ...发布→PD ...销毁
我最近写了AC库一堆的前缀的文件PD,我用创建/释放作为的malloc /免费的关键字,这是我很遗憾,因为它可能让人们认为保留计数保持,所以我想重新命名PD<anything>Release(与PD<anything>Destroy(.
([\n\r ])(PD)(.*)Release\(
$1$2$3Destroy(
Run Code Online (Sandbox Code Playgroud)
由于核芯显卡具有CGPDFDocumentRelease相似,我必须确保这个词开始与PD为好.
PDAssert(PDScannerPop...(...));
我愚蠢地把断言放在功能代码周围,当它们变成空的时候!#ifdef DEBUG.幸运的是,我知道所有这些都是从PDAssert开始的(PDScannerPop ....并以#结尾);
(PDAssert\()(PDScannerPop)(.*)(\);)
$2$3;
Run Code Online (Sandbox Code Playgroud)
这里没有$ 1,因为那将包括PDAssert(再次.请注意,我已经在PDAssert之后拆分(并且正在遗漏)in); 在第3个块中,删除多余的parens去除PDAssert(.
处理最后的括号
您可以匹配除")"之外的所有内容来处理过度贪婪的正则表达式替换.例:
foo(replace(arg), bar)
foo(newvalue(newarg), bar)
Run Code Online (Sandbox Code Playgroud)
使用replace\((.*)\)将抓取replace(arg), bar)和结果将是foo(newvalue(newarg)!而是使用replace\(([^\)]*)\)哪个会抓住replace(arg)并, bar)独自离开.
将一堆NSString属性从使用retain和/或strong(以及其他任何内容)转换为使用副本
@property \(([^\)]*)[sr][te][rt][oa][ni][gn]([^\)]*)\)(.*)NSString(.*)
@property ($1copy$2)$3NSString$4
Run Code Online (Sandbox Code Playgroud)
中心奇怪的事情与"强"和"保留"相匹配.
Emp*_*ack 42
不知何故,我通过引用帖子找到了答案(这对我的需要来说已足够了):http://www.cocoabuilder.com/archive/xcode/273123-how-to-use-regular-expressions-in -xcode-find-replace.html,以及试错法.
我的查找字符串是:
(\[myClass.myMethod )(.*)(\];)
Run Code Online (Sandbox Code Playgroud)
而且,我的替换字符串是:
\1\2WithOptions:[Permissions isOptionsAvailable]\3
Run Code Online (Sandbox Code Playgroud)
如果有比这更好的方法,请发布..
Sur*_*gch 17
我试图更新下面的Xcode 8的答案,但我做不到.如果您有答案,请告诉我.
除非你已经是正则表达天才,否则现在在Xcode中更容易做到.您根本不需要使用正则表达式(但如果您仍想使用,则可以使用).
替换这些字符串:
[myClass doOperation One ];
[myClass doOperation Two ];
[myClass doOperation Three ];
用这些字符串
[myClass doOperation One WithOptions:[Permissions isOptionsAvailable]];
[myClass doOperation Two WithOptions:[Permissions isOptionsAvailable]];
[myClass doOperation Three WithOptions:[Permissions isOptionsAvailable]];
粗体数字显示为什么普通的查找和替换不起作用.
您可以通过两种方式进行查找和替换:文本和正则表达式
单击放大镜
和"编辑查找选项..."
并选择其中之一.
输入[myClass doOperation查找
单击放大级并选择"插入模式"
];到查找WithOptions:[Permissions isOptionsAvailable]];用于最后一部分.确保按照上面的设置中的说明选择正则表达式.
使用(\[myClass doOperation)(.*)(\];)正则表达式
使用$1$2WithOptions:[Permissions isOptionsAvailable]$3了替换字符串.的$1,$2和$3替换正则表达式的括号内.
单个替换全部将立即生效.
有关正则表达式的更多帮助,请参阅此链接.
小智 7
在Xcode 11+上
例如:
当您使用view(.*)Appear查找所有 viewDidAppear 或 viewWillAppear时
并替换为args: $1
您将得到如下结果
不要忘记使用()来包装.*,否则你会得到一个空结果。
| 归档时间: |
|
| 查看次数: |
26076 次 |
| 最近记录: |