[C#] Домашно Strings and Text Processing - 15 задача


9

Условие: Write a program that replaces in a HTML document given as string all the tags <a href="…">…</a> with corresponding tags [URL=…]…/URL]. Sample HTML fragment:

<p>Please visit <a href="http://academy.telerik. com">our site</a> to choose a training course. Also visit <a href="www.devbg.org">our forum</a> to discuss the courses.</p>

<p>Please visit [URL=http://academy.telerik. com]our site[/URL] to choose a training course. Also visit [URL=www.devbg.org]our forum[/URL] to discuss the courses.</p>

Решениеsource.

Обяснение: Отново с регулярен израз, съставен от две групи - адреса и текста. Взето е предвид с "?", да не се селектнете началото на първия линк с края на последния.




Отговори



9

Моето решение използва метода Replace.

Последователно замествам символите (общо три пъти).

Внимателно използвам символа за екраниране @ (escaping sequence), като след него всичко се възприема буквално, само кавичките се екранират с двойни кавички.

http://pastebin.com/GWCeziCn




0
Освен кавичките, няма какво друго да се escape-ва, тъй че е малко излишно това @ май.

от loloto (1073 точки)


5

Решение отново с replace и 2 масива - за търсените и заместващите тагове.

http://pastebin.com/febD29pF


от sylviapsh (302 точки)


0
Аз се сетих за същото решение, регулярните изрази все още са ми мъгла :)

от vanina_nenova (327 точки)

0
То май на повечето са ни мъгла тия изрази и творим какви ли не щуротии да ги обиколим ;)

от sylviapsh (302 точки)


1

Решението е хубаво да работи за всякакви линкове .. например ако между <a и href=".." има повече от 1 разстояние, или например ако в a тага има и други параметри освен href, например target, class, както и след href атрибута може да има много разстояния, атрибути, нови редове и т.н. За да се вземат в предвид и тези случай трябва просто да се направи малко по-сложен regular expression израз. Това съм направил и аз. Ето и решението

source code


от ivanbuhov (417 точки)


0

Решение

тъй като не знаех как да взимам групите които Replace намира го направих по малко по-странен начин, но вече ще го правя като хората. Решението на jassonpet отново е доста качествено.


от Rokata (397 точки)


1

Тук най-елементарното според мен е да сложим стринга в един StringBuilder. и да Replace-нем. Може да се разшири за N Replace-а...

http://luzterin.com/?p=1665




0
Един съвет: добави условията на задачите, като пускаш решения в блога ти, защото не всеки ще влиза точно от тука в решението ти и ще знае условието :)

от SVGN_H (3048 точки)

0
пропуснал си затварящия символ на отварящия таг > ]

от pdrenovska (2196 точки)



0
Без регулярни изрази, НО работи коректно и няма да замести затварящи символи "> на други тагове.
http://pastebin.com/40QRkaZ9

от loloto (1073 точки)


0
Ето го моето решение:http://pastebin.com/RCExUHX0 В него съм използвал класа Regex.Replace();.

от Plamen.Minkov (216 точки)


1

Решавам задачата без регулярни изрази. Използвам вложен метода Replace() - input.Replace(). Replace(). Replace(), като по този начин подменям подадените символни низове.

http://pastebin.com/R30f08Jt


от Chavdar (43 точки)


2

Решение: source

Отново с регулярен израз с две групи селектираме и заместваме.


от stanchev (197 точки)


6

Решение

Използвам метода .Replace(стар таг, нов таг).


от teleriknetwork (2734 точки)