Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用NSRegularExpression查找并替换_Iphone_Objective C_Ios - Fatal编程技术网

Iphone 使用NSRegularExpression查找并替换

Iphone 使用NSRegularExpression查找并替换,iphone,objective-c,ios,Iphone,Objective C,Ios,我有一个格式为NSString*CalculationFormula=@“((Col(202)/Col(201)-1)*100”的字符串; 我需要将所有出现的Col(number)替换为ABC(number*10) 请帮忙 谢谢, Ben期望的结果有些模糊。例如,结果应该是“ABC(202*10)”还是“ABC(2020)”?我将假设为后者。由于正则表达式是相当通用的,因此这里有一个Perl代码片段,它完成了我认为您需要的内容,然后将其翻译为Cocoa。我给出了这两个代码,因为在转到NSRegu

我有一个格式为NSString*CalculationFormula=@“((Col(202)/Col(201)-1)*100”的字符串; 我需要将所有出现的Col(number)替换为ABC(number*10)

请帮忙

谢谢,
Ben

期望的结果有些模糊。例如,结果应该是“ABC(202*10)”还是“ABC(2020)”?我将假设为后者。由于正则表达式是相当通用的,因此这里有一个Perl代码片段,它完成了我认为您需要的内容,然后将其翻译为Cocoa。我给出了这两个代码,因为在转到
NSRegularExpression
之前更容易看到那里发生了什么,因为后者有太多的转义厄恩

Perl版本:

#!/usr/bin/perl -w
use strict;


my $search_text = "((Col(202)/Col(201)-1)*100";

$search_text =~ s|Col\((?P<num>\d+)\)|ABC($+{num}0)|g;
print $search_text;
#import <Foundation/Foundation.h>

int main(int argc, char *argv[]) {
    NSAutoreleasePool *p = [[NSAutoreleasePool alloc] init];

    NSRegularExpression *regex = nil;
    regex = [NSRegularExpression regularExpressionWithPattern:@"Col\\((\\d+)\\)" options:NSRegularExpressionCaseInsensitive error:nil];
    NSString *searchText = @"((Col(202)/Col(201)-1)*100";
    NSString *newText = [regex stringByReplacingMatchesInString:searchText options:0 range:NSMakeRange(0,[searchText length]) withTemplate:@"ABC($10)"];
    NSLog(@"new = %@",newText);
    [p release];
}
日志:

现在,如果我最初的假设是错误的,并且您确实希望结果中有“num*10”,那么替换模式是:

@"ABC($1 * 10)"
@"ABC($1 * 10)"