Advertisement
Borrisholt

YoutubeURLParserU

Jun 1st, 2015
1,528
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 1.26 KB | None | 0 0
  1. unit YoutubeURLParserU;
  2.  
  3. interface
  4.  
  5. uses
  6.   System.RegularExpressions;
  7.  
  8. type
  9.   TYoutubeURLParser = class
  10.   strict private
  11.     class var RegEx: TRegEx;
  12.     function GetIsValid: boolean;
  13.   var
  14.     FYoutubeUrl: String;
  15.     FYouTubeID: string;
  16.   public
  17.     class constructor Create;
  18.     constructor Create(AYoutubeUrl: String); reintroduce;
  19.   public
  20.     property YoutubeUrl: String read FYoutubeUrl;
  21.     property IsValid: boolean read GetIsValid;
  22.     property YouTubeID: string read FYouTubeID;
  23.   end;
  24.  
  25. implementation
  26.  
  27. uses
  28.   System.SysUtils;
  29. { TYoutubeURLParser }
  30.  
  31. class constructor TYoutubeURLParser.Create;
  32. begin
  33.   RegEx := TRegEx.Create('(youtu.be\/|v\/|e\/|u\/\w+\/|embed\/|v=)([^#\&\?]*)', [TRegExOption.roCompiled]);
  34. end;
  35.  
  36. constructor TYoutubeURLParser.Create(AYoutubeUrl: String);
  37. var
  38.   Tokens: TArray<string>;
  39.   Match: TMatch;
  40. begin
  41.   inherited Create;
  42.   FYouTubeID := '';
  43.   FYoutubeUrl := AYoutubeUrl;
  44.  
  45.   Match := RegEx.Match(AYoutubeUrl);
  46.  
  47.   if Match.Success then
  48.   begin
  49.     Tokens := Match.Value.Split(['/', '='], TStringSplitOptions.ExcludeEmpty);
  50.  
  51.     if Length(Tokens) = 2 then
  52.       FYouTubeID := Tokens[1];
  53.   end;
  54. end;
  55.  
  56. function TYoutubeURLParser.GetIsValid: boolean;
  57. begin
  58.   Result := FYouTubeID <> '';
  59. end;
  60.  
  61. end.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement