我正在尝试解析可能包含 url 的推文。我想在推文的其余部分用不同的颜色/字体格式化 url。很明显,url 可以放在文本中的任何位置。所以我有一个看起来像这样的类别方法:
NSString *urlString = @"";
NSRange startRange = [self rangeOfString:@"http://" options:NSCaseInsensitiveSearch];
if (startRange.length) {
NSString *subStr = [self substringFromIndex:startRange.location];
NSCharacterSet *set = [NSCharacterSet whitespaceAndNewlineCharacterSet];
NSRange endRange = [subStr rangeOfCharacterFromSet:set];
if (endRange.length) {
NSRange finalRange;
finalRange.location = startRange.location;
finalRange.length = endRange.location - 1;
NSString *finalString = [self substringWithRange:finalRange];
debugTrace(@"finalString : %@", finalString);
}
}
return urlString;
所以基本上我在文本中找到范围,http://
然后从那里到最后创建一个子字符串。从那里我寻找第一个whitespaceAndNewlineCharacterSet
并将其用作 url 的结尾来查找finalString
. 然而,线
NSRange endRange = [subStr rangeOfCharacterFromSet:set];
返回垃圾值,这让我觉得我没有使用正确NSCharacterSet
的来找到endRange
Printing description of endRange:
(NSRange) endRange = location=2147483647, length=0
我该怎么做才能找到 URL 的结束位置。