在两个字符串之间查找字符串并替换其中的一部分
Find String between two Strings and replace a part of it
我遇到了一些问题,需要 Objective-C 方面的帮助。
我试图找到一个字符串,假设它在 XML 文件中被称为 <font>
,在标签中我想替换句子中的一个词。
像这样
<body>
...
<font>Let's do a quick test</font>
...
</body>
例如:
在 <font>
和 </font>
之间,我想将单词 quick
替换为 good
。
这些更改必须覆盖 XML-File.
如果有人可以帮助我,请告诉我。
谢谢
先用这个方法得到两个字符串之间的字符串
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包含@"Let's do a quick test"然后把单词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
................................<><><><><<< >......................
XMLWriter *xmlWriter = [[XMLWriter alloc] init];
// start writing XML elements
[xmlWriter writeStartElement:@"font"];
[xmlWriter writeCharacters:str2];
[xmlWriter writeEndElement];
谢谢,
希望对你有帮助。
我遇到了一些问题,需要 Objective-C 方面的帮助。
我试图找到一个字符串,假设它在 XML 文件中被称为 <font>
,在标签中我想替换句子中的一个词。
像这样
<body>
...
<font>Let's do a quick test</font>
...
</body>
例如:
在 <font>
和 </font>
之间,我想将单词 quick
替换为 good
。
这些更改必须覆盖 XML-File.
如果有人可以帮助我,请告诉我。
谢谢
先用这个方法得到两个字符串之间的字符串
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包含@"Let's do a quick test"然后把单词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
................................<><><><><<< >......................
XMLWriter *xmlWriter = [[XMLWriter alloc] init];
// start writing XML elements
[xmlWriter writeStartElement:@"font"];
[xmlWriter writeCharacters:str2];
[xmlWriter writeEndElement];
谢谢, 希望对你有帮助。