码迷,mamicode.com
首页 > 其他好文 > 详细

网址解析函数(一)

时间:2015-02-25 06:57:05      阅读:123      评论:0      收藏:0      [点我收藏+]

标签:

近期有个项目需要对网址进行解析,查了下网络上的一些解析单元都不是理想,先将需要的函数写出来,后期根据需要再进行完善!

本单元只有2个功能,一个是解析主域名,一个是当前域名

好处在于可以分辨出域名是否是双后缀的

 

unit UrlBase;
{
2015-2-25
本单元主要用于解析网址,测试网址
http://www.cnblogs.com/sishen/p/4297303.html
}

interface

Uses System.SysUtils;

Const
  //记录后缀域名是2位的
  DomainClass : array[1..40] of string= (com.cn,net.cn,org.cn,gov.cn,
                                        mo.cn,ac.cn,bj.cn,sh.cn,
                                        tj.cn,cq.cn,he.cn,sx.cn,
                                        nm.cn,ln.cn,jl.cn,hl.cn,
                                        js.cn,zj.cn,ah.cn,fj.cn,
                                        jx.cn,sd.cn,ha.cn,hb.cn,
                                        hn.cn,gd.cn,gx.cn,hi.cn,
                                        sc.cn,gz.cn,yn.cn,gs.cn,
                                        qh.cn,nx.cn,xj.cn,tw.cn,
                                        hk.cn,com.tw,com.hk,cn.com);
//获取主域名函数:GetMainDoMain
//比如:http://www.cnblogs.com/sishen/p/4297303.html
//获取结果: cnblogs.com
function GetMainDoMain(Url:String):String;

//获取当前域名函数:GetCurrentDoMain
//比如:http://www.cnblogs.com/sishen/p/4297303.html
//获取结果: www.cnblogs.com
function GetCurrentDoMain(Url:String):String;


implementation

//判断数组是否存在指定字符
function AnsiIndexText(const AText: string; const AValues: array of string): Integer;
var
  I: Integer;
begin
  Result := -1;
  for I := Low(AValues) to High(AValues) do
  if AnsiSameText(AText, AValues[I]) then begin
    Result := I;
    Break;
  end;
end;

//查询字符在字符串出现次数
function StrPosCount(subs:string;source:string):integer;
var
  Str : string;
begin
  Result := 0;
  str := source;
  while Pos(Subs,Str)<>0 do begin
    Delete(Str,Pos(Subs,Str),Length(Subs));
    Inc(Result);
  end;
end;

function LeftStr(Const Str: String; Size: Word): String;
begin
  LeftStr := Copy(Str, 1, Size)
end;

function GetMainDoMain(Url:String):String;
Var
  Str:String;
begin
  If Leftstr(LowerCase(Url),7) = http:// then Delete(Url,1,7);  //去除http://
  If Pos(/,Url) <> 0 then Delete(Url,Pos(/,Url),Length(Url)); //去除主域名以外的字符
  While StrPosCount(.,Url) <> 1 do begin //循环,直到获取最后2位
    Str:=Copy(Url,1,Pos(.,Url)-1);
    Delete(Url,1,Pos(.,Url));
  end;
  if AnsiIndexText(Url,DomainClass) <> -1 then Url:=Format(%s%s%s,[Str,.,Url]);
  Result:= Url;
end;

function GetCurrentDoMain(Url:String):String;
begin
  If Leftstr(LowerCase(Url),7) = http:// then Delete(Url,1,7);  //去除http://
  If Pos(/,Url) <> 0 then Delete(Url,Pos(/,Url),Length(Url)); //去除主域名以外的字符
  Result:= Url;
end;

end.

 

网址解析函数(一)

标签:

原文地址:http://www.cnblogs.com/sishen/p/4299109.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!