Loading...
rosen.ivanov avatar rosen.ivanov 130 Точки

[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}");

Тагове:
0
C# Advanced
rosen.ivanov:
Получих отговор.
icowwww avatar icowwww 2791 Точки

Може би защото в първия случай зимаш urlTokens[1] още преди да е минала проверката дали то съществува. Даже би трябвало ако размениш местата във втория случай(който сега работи на 100) на if (urlTokens[1].IndexOf('/') == -1 || urlTokens.Length != 2) пак да гръмне за този тест

0
08/06/2017 12:08:13
rosen.ivanov avatar rosen.ivanov 130 Точки

Така, както казваш, гърми, да, ама защо, това че вземам индекса преди проверката е проблем? Просто indexResource ще е равен на -1, ако няма наклонена черта в текста.

0
icowwww avatar icowwww 2791 Точки

Теста от джъдж е текст, в който няма "://". Тогава се получава това: 

urlTokens.Length = 1

взимаш urlTokens[1], преди да провериш дали urlTokens.Length != 2, така излиза от масива

0
rosen.ivanov avatar rosen.ivanov 130 Точки

Разбрах, ама това е малко тъпичко...

0
prohause avatar prohause 356 Точки

Изобщо даже не е тъпо. Те са написали, че ако :// липсва е невалидно URL. Първо правиш проверка дали е налично и после цепиш.

0
rosen.ivanov avatar rosen.ivanov 130 Точки

Колега, говорим за съвсем друго нещо...

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.