最近看了看網(wǎng)上的教程坡垫,發(fā)現(xiàn)這正則處理文本如此強(qiáng)大,簡(jiǎn)潔画侣。簡(jiǎn)單用Objective-C語(yǔ)言嘗試一下冰悠。寫(xiě)了一個(gè)小方法,在字符串中提取標(biāo)題配乱,iphone中的備忘錄沒(méi)有沒(méi)有輸入標(biāo)題的地方溉卓,他默認(rèn)第一行非空白文本字符為標(biāo)題皮迟。實(shí)現(xiàn)這個(gè)功能,嘗試用C語(yǔ)言對(duì)字符處理和OC的NSSting方法處理都不夠簡(jiǎn)潔的诵,用正則則是這樣:\s*.*\s*
下面是在Objective-C語(yǔ)言中的使用
//在字符串中提取第一行文本范圍
- (NSRange)extractTitleRangeWithString:(NSString *)containerString{
/**
\s 匹配任意的空白符
* 重復(fù)零次或更多次
. 匹配除換行符以外的任意字符
組合起來(lái)就是万栅,拿到空白字符佑钾,任意字符西疤,空白字符的組合了。
這和iphone中備忘錄的處理方式相同
*/
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"\\s*.*\\s*"
options:NSRegularExpressionCaseInsensitive
error:nil];
NSTextCheckingResult *result = [regex firstMatchInString:containerString options:NSMatchingReportCompletion range:NSMakeRange(0, containerString.length)];
return result.range;
}
獲取范圍后再配合NSString中的方法休溶,實(shí)現(xiàn)提取title的功能代赁。
/**
提取字符串的標(biāo)題,忽略前綴后綴空白
@param containerString 需要處理的字符串
@return 標(biāo)題
*/
- (NSString *)extractTitle:(NSString *)containerString{
NSRange range = [self extractTitleRangeWithString:containerString];
//獲取第一次以換行結(jié)束的字符串
NSString *resultString = [containerString substringWithRange:range];
//去除字符串首尾的空格和換行符
NSString *title = [resultString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
return title;
}