7. Parse URL


0
Здравейте, някой успял ли е да се справи с parse URL задачата ?



Отговори



0

Тъй като поиска разяснения, ще си плясна моят код с малко разяснения, не гледай колко ми е калпав кода :).

function solve (args) { //функцията, която приема бгкодер, на последният ред ще я видиш извикана с примерен тест

       let link = args[0]; //вземам входните данни, такива каквито ми ги подаде бгкодер

       let protocolInd = link.lastIndexOf(':'); //вземам индекса на протокола http или https. Тъй като края на протокола винаги завършва с двоеточие, вземам индекса на двете точки

       let protocol = link.substring(0, protocolInd); //изрязвам до двете точки и вземам стринга от нулевия индекс до тях

       console.log(`protocol: ${protocol}`); //изкарвам резултата за протокола

      let serverInd = link.indexOf('//'); //вземам индекса на двете наклонени черти

       let server1 = link.substring(protocolInd + 3); //изрязвам всичко до двете наклонени черти

       let server2 = server1.indexOf('/'); //вземам индекса на следващата наклонена черта

let server = server1.substring(0, server2); //изрязвам всичко от началото на новия стринг до станалата вече първа наклонена черта

       console.log(`server: ${server}`); //изкарвам резултата на naked domain-a

       

     let resource = server1.substring(server2); //изрязвам naked domain-a и вземам остатъка до края

       console.log(`resource: ${resource}`); //изкарвам го на а се вижда :))

   }

solve([ 'http://telerikacademy.com/Courses/Courses/Details/239' ]); //извиквам функцията с примерен резултат. Този ред не го подаваш на бгкодера


Надявам се да съм бил полезен.




0

Да.. Да кача ли код? :)


от angel2505 (0 точки)


0
Ще съм благодарен повече на обеснение/насоки, но и код става.


0

    function solve(args){
    let str=args[0].split(/:|\./);
    let a=str[0],b=str[1].concat('.'),c=str[2];
    let angel=3;
    while (str[angel]!=null) {
        c=c.concat('.', str[angel]);
        angel+=1;
    }
    while (b[0]=='/')
    { 
        b=b.substring(1);
    }
    while (c[0]!='/') 
    {
        b=b.concat(c[0]);
        c=c.substring(1);        
    }
    console.log("protocol: "+a);
    console.log("server: "+b);
    console.log("resource: "+c);
    }

Това е моят, мисля, че се разбира.. Малко си го нагласях, но поне дава точките


от angel2505 (0 точки)


-1

Ето един код за 100 от мен

function solve(args) {
  var protocolSeparator = '://';
  var serverSeparator = '/';
  var parse = args[0] + '';
  var index = 0;
  var len = protocolSeparator.length;

  var protocol = '';
  var server = '';
  var resource = '';


  index = parse.indexOf(protocolSeparator);
  protocol = parse.substr(0, index);

  len = index + len;
  index = parse.indexOf(serverSeparator, len);

  server = parse.substr(len, index - len);
  resource = parse.substr(index);

  console.log('protocol: ' + protocol);
  console.log('server: ' + server);
  console.log('resource: ' + resource);
}




2

Ето и моето решение за 100/100, което е с доста кратък запис чрез RegEx:

function solve(args){

let url = args[0],
protocol = url.match(/(.*):\/\//)[1],
server = url.match(/:\/\/(.*?)\//)[1],
resource = url.match(/[a-zA-Z](\/.*)/)[1];

console.log(`protocol: ` + protocol);
console.log(`server: ` + server);
console.log(`resource: ` + resource);
}

Кофтито на този метод е че не е доста ясно и е трудно четим, но пък е готин :)