如何检测 URL - Dart/Flutter 中的变化
How to detect change in the URL - Dart/Flutter
我正在尝试从 youtube URL 中获取特定部分。例如:- 如果用户输入以下 URL https://www.youtube.com/watch?v=KOjE7cQ0FkA
我将使用以下方法获取以下部分 KOjE7cQ0FkA
String url = urlController.text; // https://www.youtube.com/watch?v=KOjE7cQ0FkA
List urlList = url.split("=");
String urlCode = await urlList[1];
但有时人们会从手机上复制视频 link,这就是它的显示方式
https://youtu.be/KOjE7cQ0FkA 在这种情况下,上面的代码将不起作用
那么如何检测用户输入了哪个URL并进行相应的拆分操作
抱歉,如果我的问题听起来很愚蠢,但我希望你知道我在这里想要实现的目标
有很多方法可以解决这个问题。一种方法是解析 URL(看看这个 SO question)。
通过这种方法,您可以检查查询参数 watch
是否存在——如果不存在,URL 可能是移动格式。
另一种方法是为 URL 的 Video-ID (KOjE7cQ0FkA) 部分定义正则表达式。这样,无论 URL 的格式如何,您都可以提取 Video-ID。我可能会采用这种方法。
您的正则表达式可能如下所示:([a-zA-Z]+(\d[a-zA-Z]+)+)
我使用 this 网站来创建正则表达式。您可能需要稍微修改一下。此外,如果 ID 具有固定长度,这是一个很好的过滤标准。
我正在尝试从 youtube URL 中获取特定部分。例如:- 如果用户输入以下 URL https://www.youtube.com/watch?v=KOjE7cQ0FkA
我将使用以下方法获取以下部分 KOjE7cQ0FkA
String url = urlController.text; // https://www.youtube.com/watch?v=KOjE7cQ0FkA
List urlList = url.split("=");
String urlCode = await urlList[1];
但有时人们会从手机上复制视频 link,这就是它的显示方式 https://youtu.be/KOjE7cQ0FkA 在这种情况下,上面的代码将不起作用
那么如何检测用户输入了哪个URL并进行相应的拆分操作
抱歉,如果我的问题听起来很愚蠢,但我希望你知道我在这里想要实现的目标
有很多方法可以解决这个问题。一种方法是解析 URL(看看这个 SO question)。
通过这种方法,您可以检查查询参数 watch
是否存在——如果不存在,URL 可能是移动格式。
另一种方法是为 URL 的 Video-ID (KOjE7cQ0FkA) 部分定义正则表达式。这样,无论 URL 的格式如何,您都可以提取 Video-ID。我可能会采用这种方法。
您的正则表达式可能如下所示:([a-zA-Z]+(\d[a-zA-Z]+)+)
我使用 this 网站来创建正则表达式。您可能需要稍微修改一下。此外,如果 ID 具有固定长度,这是一个很好的过滤标准。