假设我有以下字符串作为URL:
String urlSource = 'https://www.wikipedia.org/';
我想从这个URL字符串中提取主页名称:'维基百科',删除URL中的'https://'、'www'、'.com'和'.org'部分。
最佳提取方法是什么?如果使用RegExp,则需要使用什么正则表达式?
在这种情况下,您不需要使用RegExp
。
Dart已经为解析URL提供了预制的类:
Uri
使用该API实现您想要的功能非常简单:
final urlSource = 'https://www.wikipedia.org/';
final uri = Uri.parse(urlSource);
uri.host; // www.wikipedia.org
Uri.host
属性会给出 www.wikipedia.org
。从中,您应该能够轻松提取出 wikipedia
。
Uri.host
还将删除整个路径,即主机后的任何内容在/
之后。
如果您想从主机中获取二级域名,例如 wikipedia
,您可以使用 uri.host.split('.')[uri.host.split('.').length - 2]
。
但是请注意,这不是万无一失的,因为您可能有子域或没有(例如www
),顶级域也可能由多个部分组成。例如,co.uk
使用 co
作为二级域名。
uri.host.split('.')[uri.host.split('.').length - 2]
。 - MonkeyZeusUri#host
实际上不起作用。 Uri.parse('www.wikipedia.org/').host
为“”
。 - Ben Butterworth
[^\.]+(?=\.[^\.]+$)
可以使用。 - MonkeyZeus