2017-09-06 64 views
0

我遇到了一些问题,需要Objective-C的一些帮助。 我试图找到一个字符串,假设它被称为<font>在一个XML文件中,并在标签内我想替换一个句子中的单词。在两个字符串之间查找字符串并替换其中的一部分

像这样的事情

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

例如: 之间<font></font>我想这个词quick更换到good。 这些更改必须覆盖XML文件。

如果有人可以帮助我,请让我知道。

谢谢

+0

你可以使用一个'NSRegularExpression'来实现,模式可能是这样的:'([。\ s \ S] *?)<\/font>'? – Larme

+0

这可以做到这一点:'NSError * errorRegex = nil; NSRegularExpression * regex = [NSRegularExpression regularExpressionWithPattern:@“(([。\\ s \\ S] *?))(quick)(([。\\ s \\ S] *?)<\\/font>)”options:NSRegularExpressionCaseInsensitive error :&errorRegex]; [regex replaceMatchesInString:str选项:0范围:NSMakeRange(0,[str length])withTemplate:@“$ 1good $ 4”];'' – Larme

回答

0
  • 使用这种方法

    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包含@“让我们做一个快速测试”,然后替换的单词快速良好

    NSString *str2 = [str1 stringByReplacingOccurrencesOfString:@"quick" withString:@"good"]; 
    
  • 有一些苹果提供更多的方法,帮助您更多的选择,以取代

/*用指定范围替换所有出现的目标字符串。指定的比较选项用于匹配目标。如果指定了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

XMLWriter的*的XmlWriter = [[XMLWriter的页头] INIT];

// start writing XML elements 
[xmlWriter writeStartElement:@"font"]; 
[xmlWriter writeCharacters:str2]; 
[xmlWriter writeEndElement]; 

谢谢, 希望这可以帮助你。

相关问题