gpt4 book ai didi

ios - 获取字符串的某些部分

转载 作者:行者123 更新时间:2023-11-28 22:41:33 24 4
gpt4 key购买 nike

如果我有一个返回值的字符串:

<div style="clear:both;"></div>
<div style="float:left;">
<div style="float:left; height:27px; font-size:13px; padding-top:2px;">
<div style="float:left;"><a href="http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3" rel="nofollow" target="_blank" style="color:green;">Download</a></div>

我怎样才能得到 <a href="http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3"退出它?如果已经有关于此的帖子,我很抱歉,我找不到。

最佳答案

这是使用正则表达式查找子字符串的示例。它查找“href=”,然后查找 href= 之后的第一个引号 (")。一旦找到这些索引,就会返回 then 之间的字符串。

在我的示例中并不真正需要正则表达式,您可以使用简单的 NSString 方法来查找子字符串。

这只是一个适合您特定情况的硬编码示例。实际上,您最好使用 DOM/XML 解析器来执行此类操作。

此外,我假设您想提取实际的 URL 并且不关心

另请注意,此函数不处理字符串中没有 href 匹配的情况。

- (NSString *)stringByExtractingAnchorTagURLFromString:(NSString *)dom {
NSError *error;

// Find the "href=" part
NSRegularExpression *firstRegexp = [NSRegularExpression regularExpressionWithPattern:@"href=\"" options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *firstResult = [firstRegexp firstMatchInString:dom options:NSMatchingReportProgress range:NSMakeRange(0, [dom length])];

NSUInteger startIndex = firstResult.range.location + firstResult.range.length;

// Find the first quote (") character after the href=
NSRegularExpression *secondRegexp = [NSRegularExpression regularExpressionWithPattern:@"\"" options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *secondResult = [secondRegexp firstMatchInString:dom options:NSMatchingReportProgress range:NSMakeRange(startIndex, [dom length]-startIndex)];

NSUInteger endIndex = secondResult.range.location;

// The URL is the string between these two found locations
return [dom substringWithRange:NSMakeRange(startIndex, endIndex-startIndex)];
}

我是这样测试的:

NSString *dom = @"<div style=\"clear:both;\"></div><div style=\"float:left;\"><div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\"><div style=\"float:left;\"><a href=\"http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a></div>";
NSString *result = [self stringByExtractingAnchorTagURLFromString:dom];
NSLog(@"Result: %@", result);

测试打印:

Result: http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3

更新 -- 多个 HREF

对于多个 hrefs 使用此函数,它将返回一个包含 url 的 NSStrings 数组:

- (NSArray *)anchorTagURLsFromString:(NSString *)dom {
NSError *error;
NSMutableArray *urls = [NSMutableArray array];

// First find all matching hrefs in the dom
NSRegularExpression *firstRegexp = [NSRegularExpression regularExpressionWithPattern:@"href=\"" options:NSRegularExpressionCaseInsensitive error:&error];
NSArray *matches = [firstRegexp matchesInString:dom options:NSMatchingReportProgress range:NSMakeRange(0, [dom length])];

// Go through all matches and extrac the URL
for (NSTextCheckingResult *match in matches) {
NSUInteger startIndex = match.range.location + match.range.length;

// Find the first quote (") character after the href=
NSRegularExpression *secondRegexp = [NSRegularExpression regularExpressionWithPattern:@"\"" options:NSRegularExpressionCaseInsensitive error:&error];
NSTextCheckingResult *secondResult = [secondRegexp firstMatchInString:dom options:NSMatchingReportProgress range:NSMakeRange(startIndex, [dom length]-startIndex)];

NSUInteger endIndex = secondResult.range.location;

[urls addObject:[dom substringWithRange:NSMakeRange(startIndex, endIndex-startIndex)]];
}

return urls;
}

我是这样测试的:

NSString *dom2 = @"<div style=\"clear:both;\"></div><div style=\"float:left;\"><div style=\"float:left; height:27px; font-size:13px; padding-top:2px;\"><div style=\"float:left;\"><a href=\"http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a><a href=\"http://www.google.com/blabla\" rel=\"nofollow\" target=\"_blank\" style=\"color:green;\">Download</a></div>";
NSArray *urls = [self anchorTagURLsFromString:dom2];
for (NSString *url in urls) {
NSLog(@"URL: %@", url);
}

这是测试的输出:

URL: http://www.hulkshare.com/ap-nxy2n2wn7ke8.mp3
URL: http://www.google.com/blabla

关于ios - 获取字符串的某些部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14390762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com