2

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 の末尾を見つけるにはどうすればよいでしょうか。

4

1 に答える 1