如何使用 flutter 在绘制的第三行响应中检索 url?

how to retrieve url on third line of response as drawn, using flutter?

当我想解析来自服务器的响应时遇到问题,如下所示,谁能帮我解决这个问题

如何使用 flutter 在绘制的第三行响应中检索 URL?

#EXTM3U #EXTINF:0 tvg-logo="http://example.com/logo/" tvg-id="" ,麦德龙电视 http://127.0.0.1:8000/live/test/test/3

首先获取 String 数据类型的响应。

现在您可以通过从对列表的整个字符串响应中提取所有 url 并从该列表中获取最后一项来实现。

获取 URL 列表:

final urlRegExp = new RegExp(
r"((https?:www\.)|(https?:\/\/)|(www\.))[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9]{1,6}(\/[-a-zA-Z0-9()@:%_\+.~#?&\/=]*)?");
final urlMatches = urlRegExp.allMatches(response);
List<String> urls = urlMatches.map(
    (urlMatch) => text.substring(urlMatch.start, urlMatch.end))
.toList();

现在从列表中获取最后一个元素:

print(urls[urls.length-1]);

编辑:只需使用(替代解决方案):

print(text.split('\n')[2]); // http://127.0.0.1:8000/live/test/test/3

您可以通过使用 split method offered by the LineSplittere class 其中 returns 行列表来实现此目的。

代码:

import 'dart:convert';

void main() {

  String text = '''#EXTM3U
  #EXTINF:0 tvg-logo="http://example.com/logo/" tvg-id="", METRO TV
  http://127.0.0.1:8000/live/test/test/3''';
  
  print(LineSplitter.split(text).toList()[2]);
  
}

输出:

http://127.0.0.1:8000/live/test/test/3