[C# Advanced][Manual String Processing - Lab] 02. Parse URLs
Здравейте,
Някой може ли да ми обясни защо при първия вариант единия тест в Judge гърми, а при втория всичко е наред?
var url = Console.ReadLine();
var urlTokens = url.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);
var indexResource = urlTokens[1].IndexOf('/');
if (urlTokens.Length != 2 || urlTokens[1].IndexOf('/') == -1)
{
Console.WriteLine("Invalid URL");
return;
}
var protocol = urlTokens[0];
var server = urlTokens[1].Substring(0, indexResource);
var resources = urlTokens[1].Substring(indexResource + 1);
Console.WriteLine($"Protocol = {protocol}");
Console.WriteLine($"Server = {server}");
Console.WriteLine($"Resources = {resources}");
========================================================================
var url = Console.ReadLine();
var urlTokens = url.Split(new[] { "://" }, StringSplitOptions.RemoveEmptyEntries);
if (urlTokens.Length != 2 || urlTokens[1].IndexOf('/') == -1)
{
Console.WriteLine("Invalid URL");
return;
}
var protocol = urlTokens[0];
var indexResource = urlTokens[1].IndexOf('/');
var server = urlTokens[1].Substring(0, indexResource);
var resources = urlTokens[1].Substring(indexResource + 1);
Console.WriteLine($"Protocol = {protocol}");
Console.WriteLine($"Server = {server}");
Console.WriteLine($"Resources = {resources}");
Така, както казваш, гърми, да, ама защо, това че вземам индекса преди проверката е проблем? Просто indexResource ще е равен на -1, ако няма наклонена черта в текста.
Теста от джъдж е текст, в който няма "://". Тогава се получава това:
urlTokens.Length = 1
взимаш urlTokens[1], преди да провериш дали urlTokens.Length != 2, така излиза от масива
Разбрах, ама това е малко тъпичко...
Изобщо даже не е тъпо. Те са написали, че ако :// липсва е невалидно URL. Първо правиш проверка дали е налично и после цепиш.
Колега, говорим за съвсем друго нещо...