You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何不使用gsub或split,通过Domainatrix.parse获取online.citibank.co.in?

问题场景

使用Domainatrix解析URL时遇到如下情况:

2.5.0 :150 > url = 'https://www.online.citibank.co.in/credit-card/apply'
 => "https://www.online.citibank.co.in/credit-card/apply" 
2.5.0 :151 > Domainatrix.parse(url)
 => #<Domainatrix::Url:0x00007fd7850df4a8 @scheme="https", @host="www.online.citibank.co.in", @port="", @url="https://www.online.citibank.co.in/credit-card/apply", @public_suffix="co.in", @domain="citibank", @subdomain="www.online", @path="/credit-card/apply", @localhost=false, @ip=false> 
2.5.0 :152 > Domainatrix.parse(url).domain_with_public_suffix
 => "citibank.co.in" 

调用domain_with_public_suffix只能得到citibank.co.in,但需要获取online.citibank.co.in,且要求不能使用gsub或split方法。

解决方案

可以利用Domainatrix解析后的对象属性,结合字符串的rindex方法实现需求:

url = 'https://www.online.citibank.co.in/credit-card/apply'
parsed_url = Domainatrix.parse(url)

# 截取子域名的最后一段
last_sub_segment = parsed_url.subdomain[parsed_url.subdomain.rindex('.') + 1..-1]
# 拼接得到目标域名
target_domain = "#{last_sub_segment}.#{parsed_url.domain_with_public_suffix}"

puts target_domain # 输出: online.citibank.co.in

逻辑说明

  1. parsed_url.subdomain返回www.online,通过rindex('.')找到最后一个.的索引位置,截取该位置之后的内容得到online;
  2. 将截取的子域名段与domain_with_public_suffix返回的citibank.co.in拼接,即可得到目标域名;
  3. 全程未使用gsub或split方法,符合要求。

内容的提问来源于stack exchange,提问作者Vinay Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:10:12