在两个字符串之间查找字符串并替换它的一部分

时间:2017-09-06 09:28:39

标签: objective-c xcode macos xcode9

我遇到一些问题,需要Objective-C的一些帮助。 我试图找到一个字符串,让我们说它在XML文件中被称为<font>,在标签内我想要替换句子中的单词。

像这样的东西

<body>
...
<font>Let's do a quick test</font>
...
</body>

例如: 在<font></font>之间,我想将quick替换为good。 这些更改必须覆盖XML文件。

如果有人可以帮助我,请告诉我。

谢谢

1 个答案:

答案 0 :(得分:1)

  • 首先使用此方法获取两个字符串之间的字符串

    NSString *str1 = [self getSubString:fullString fromRangeOfString:@"<font>" endWith:@"</font>"];
    

-

-(NSString *)getSubString:(NSString *)string fromRangeOfString:(NSString *)rangeStr endWith:(NSString *)endStr{
    NSString *param = @"";
    NSRange start = [string rangeOfString:rangeStr];
    if (start.location != NSNotFound)
    {
        param = [string substringFromIndex:start.location + start.length];
        NSRange end = [param rangeOfString:endStr];
        if (end.location != NSNotFound)
        {
            param = [param substringToIndex:end.location];
        }
    }
    return param;
}
  • 现在str1包含@&#34;让我们做一个快速测试&#34;然后将单词quick替换为good

    NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"quick" withString:@"good"];
    
  • Apple提供了更多方法,帮助您更换更多选项

/ *用替换替换指定范围内所有出现的目标字符串。指定的比较选项用于匹配目标。如果指定了NSRegularExpressionSearch,则将替换视为模板,如相应的NSRegularExpression方法,除NSCaseInsensitiveSearch和NSAnchoredSearch外,不能应用其他选项。 * /

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement options:(NSStringCompareOptions)options range:(NSRange)searchRange NS_AVAILABLE(10_5, 2_0);

/ *用替换替换所有出现的目标字符串。使用0选项和整个字符串的范围调用上述方法。 * /

- (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0);

/ *用指定的字符串替换范围内的字符,返回新字符串。 * /

- (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement NS_AVAILABLE(10_5, 2_0);
  • 将结果str2写入XML

................................&LT;&GT;&LT;&GT;&LT;&GT;&LT;&GT ;&LT;&GT;&LT;&GT;&LT;&GT; ...........................

XMLWriter *xmlWriter = [[XMLWriter alloc] init];
// start writing XML elements
[xmlWriter writeStartElement:@"font"];
[xmlWriter writeCharacters:str2];
[xmlWriter writeEndElement];

谢谢, 希望这会对你有所帮助。