2017-09-06 88 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]; 

謝謝, 希望這可以幫助你。

相關問題