gpt4 book ai didi

ios - 什么是最好的解决方案?扫描

转载 作者:行者123 更新时间:2023-11-28 20:05:22 30 4
gpt4 key购买 nike

我有一个像这样的字符串:@"ololo width: 350px jijiji width:440px ... text=12... "我想将@"width: "之后的所有数字替换为280。所以在扫描之后,它应该是:

@" ololo width: 280px jijiji width: 280px ... text=12... "

什么是最好的解决方案?

最佳答案

您可以使用正则表达式:

NSString *string = @" ololo width: 350px jijiji width:440px ... text=12... ";
NSMutableString *replaced = [string mutableCopy];

NSString *pattern = @"(width:\\s*)(\\d+)(px)";
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:pattern
options:0
error:NULL];
[regex replaceMatchesInString:replaced options:0 range:NSMakeRange(0, replaced.length)
withTemplate:@"$1280$3"];

该模式具有三个“捕获组”:

  • 第一个匹配字符串“width:”,可选地后跟一些空格,
  • 第二个匹配一个或多个数字,
  • 第三个匹配字符串“px”。

保留第一个和第三个捕获组($1, $3在替换模板中),第二个替换为 280。


(根据您的意见更新:)如果您需要匹配的字符串(“350”,“440”)以及然后它稍微复杂一些。而不是 replaceMatchesInString:你可以使用 enumerateMatchesInString::

[regex enumerateMatchesInString:replaced
options:0
range:NSMakeRange(0, [replaced length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
// range = location of the regex capture group "(\\d+)":
NSRange range = [result rangeAtIndex:2];
// Get old width:
NSString *oldWidth = [replaced substringWithRange:range];
NSLog(@"old width=%@", oldWidth);
// Replace with new width :
NSString *newWidth = @"280";
[replaced replaceCharactersInRange:range withString:newWidth];
}
];

关于ios - 什么是最好的解决方案?扫描,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22282346/

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