Dart 从 URL 字符串中提取主机

SLe*_*deR 2 regex url dart flutter

假设我有以下 URL 作为字符串;

String urlSource = 'https://www.wikipedia.org/';
Run Code Online (Sandbox Code Playgroud)

我想从这个 url 字符串中提取主页名称;'wikipedia',从网址中删除https://www.com.org部分。

提取它的最佳方法是什么?在RegExp 的情况下,我必须使用什么正则表达式?

cre*_*not 6

不需要利用的RegExp在这种情况下。

Dart 有一个用于解析 URL 的预制类:

Uri

使用该 API,您想要实现的目标非常简单:

final urlSource = 'https://www.wikipedia.org/';

final uri = Uri.parse(urlSource);
uri.host; // www.wikipedia.org
Run Code Online (Sandbox Code Playgroud)

Uri.host属性会给你www.wikipedia.org。从那里,您应该可以轻松地提取wikipedia.

Uri.host还将删除整个路径,即/主机之后的任何内容。

提取二级域

如果你想获得二级域名,即wikipedia从主机,你可以只做uri.host.split('.')[uri.host.split('.').length - 2].

但是,请注意,这不是万无一失的,因为您可能有或没有子域(例如www),并且顶级域也可能由多个部分组成。例如,co.uk使用co作为第二级域。