gpt4 book ai didi

ios - NSString正则表达式查找和替换

转载 作者:行者123 更新时间:2023-12-01 17:21:05 28 4
gpt4 key购买 nike

生成需要在UIWebView对象中显示一些HTML字符串的iOS应用。我正在尝试搜索,查找图案,并替换为指向图像的正确链接。图像链接是类似于[pic:brand:123]的原始内容,其中pic始终是picbrand可以是任何字母数字,而123也可以是任何非空白字母数字。

到目前为止,我已经尝试了一些方法,包括:

NSString *pattern = @"\\[pic:([^\\s:\\]]+):([^\\]])\\]";

但是到目前为止,没有一个有效。

这是一个示例代码:
NSString *str = @"veryLongHTMLSTRING";
NSLog(@"Original test: %@",[str substringToIndex:500]);
NSError *error = nil;
// use regular expression to replace the emoji
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"\\[pic:([^\\s:\\]]+):([^\\]])\\]"
options:NSRegularExpressionCaseInsensitive error:&error];
if(error != nil){
NSLog(@"ERror: %@",error);
}else{
[regex stringByReplacingMatchesInString:str
options:0
range:NSMakeRange(0, [str length])
withTemplate:[NSString stringWithFormat:@"/%@/photo/%@.gif",
IMAGE_BASE_URL, @"$1/$2"]];

NSLog(@"Replaced test: %@",[str substringToIndex:500]);

最佳答案

我看到两个错误:正则表达式模式的第二个捕获组中缺少+,应该是

NSString *pattern = @"\\[pic:([^\\s:\\]]+):([^\\]]+)\\]";
stringByReplacingMatchesInString返回一个新字符串,它不会替换匹配的字符串。因此,您必须将结果分配给新字符串,或将 replaceMatchesInString:options:range:withTemplate:NSMutableString一起使用。

以下修改后的代码
NSString *pattern = @"\\[pic:([^\\s:\\]]+):([^\\]]+)\\]";
NSString *str = @"bla bla [pic:brand:123] bla bla";
NSLog(@"Original test: %@",str);
NSError *error = nil;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:pattern
options:NSRegularExpressionCaseInsensitive error:&error];
if(error != nil){
NSLog(@"ERror: %@",error);
} else{
NSString *replaced = [regex stringByReplacingMatchesInString:str
options:0
range:NSMakeRange(0, [str length])
withTemplate:[NSString stringWithFormat:@"/%@/photo/%@.gif",
@"IMAGE_BASE_URL", @"$1/$2"]];

NSLog(@"Replaced test: %@",replaced);
}

产生输出

Original test: bla bla [pic:brand:123] bla bla
Replaced test: bla bla /IMAGE_BASE_URL/photo/brand/123.gif bla bla

关于ios - NSString正则表达式查找和替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14305341/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com