- 今天一個(gè)朋友問我 怎么去把
<p>九朝古都是[[洛陽|開封|西安]]</p><p>六朝古都是[[洛陽|西安]]</p>
這樣的一個(gè)字符串中的[[洛陽|開封|西安]]字符替換成一個(gè)其他的字符串,而且字符串里面不止有僅僅一個(gè)這種字符。
- 第一次我是這樣寫的
///
//* /替換掉[[]] 以及[[]]里面的字符串
//*
//* @param string 原始字符串
//*
//* @return 得到的新的字符串
//*/
- (NSString *)str:(NSString *)string replaceStr:(NSString *)replaceStr{
NSString *newString = string;
if ([string rangeOfString:@"[["].location != NSNotFound||[string rangeOfString:@"]]"].location != NSNotFound) {
NSArray * arr = [string componentsSeparatedByString:@"[["];
string = arr[1];
NSArray * arr1 = [string componentsSeparatedByString:@"]]"];
string = arr1[0];
string = [NSString stringWithFormat:@"[[%@]]",string];
}
newString = [newString stringByReplacingOccurrencesOfString:string withString:replaceStr];
return newString;
}
可是這種方法只能滿足該方法只能滿足里面只有一個(gè)這種樣式的字符[[哈哈哈]],才能夠替換成功
- 最后是用這種方法解決的,無論改字符串中有多少個(gè)這種樣式的字符,都能夠一下替換掉
- (NSString *)string:(NSString *)string replaceStr:(NSString *)replaceStr{
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:
@"\\[{2}([\u4E00-\u9FFF]+)+((\\|){1}([\u4E00-\u9FFF]+))*\\]{2}" options:0 error:nil];
string = [regularExpression stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:replaceStr];
return string;
}
- 朋友試著用了下發(fā)現(xiàn)上面方法只能匹配漢字,所以又有了下面這個(gè)方法
- (NSString *)string:(NSString *)string replaceStr:(NSString *)replaceStr{
NSRegularExpression *regularExpression = [NSRegularExpression regularExpressionWithPattern:
@"\\[{2}.*?\\]{2}"
options:0 error:nil];
string = [regularExpression stringByReplacingMatchesInString:string options:0 range:NSMakeRange(0, string.length) withTemplate:replaceStr];
return string;
}