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


7

Условие: Write a program for extracting all email addresses from given text. All substrings that match the format <identifier>@<host>…<domain> should be recognized as emails.

Решениеsource.

Обяснение: Отново с регулярен израз. Може да се подобри и да проверява за повече символи и за определена дължина. Така просто търси за дума, следвана от @, след това нова дума, точка и пак друга дума.

Edit: Ето и пълен регулярен израз, ако на някой случайно му потрябва.




Отговори



0
http://pastebin.com/v8SGXApc - създаваме си нов regex и взимам всички съвпадения с помощта на Matches. След това с един for цикъл ги принтирам.

от agentzero (0 точки)


2

Ето и от мен решение: http://pastebin.com/JTHHt1hZ

Работи и с примера от учебника, но не е кратко решение. Видях решението на колегата agentzero и то е доста по-оптимизирано :)




0

GitHub

Реших да използвам регулярен израз. Не твърдя че е най-пълния възможен - колегата jassonpet е постнал линк за пълен такъв (http://code.iamcal.com/php/rfc822/full_regexp.txt)


от dzhenko (3893 точки)


0

Едно решение измислено благодарение на обяснението на колегата Ивайло Кенов, че ID на емайл е минимално 6 знака, HOST - минимъм 1 знак и DOMAIN- минимум 2 знака. 

чета ред по ред текст и ако в реда има @, вероятно има и емайл. Разделям реда на думи като за split елемент използвам всички възможни елементи който не могат да се съдържат в изписването на един емайл.

Дума по дума търся дали  съдържа @. Ако съдържа проверявам дали е веднъж.Ако е веднъж проверявам дължините на  ID,  HOST и DOMAIN и ако са в границите на описаното по-горе, записвам думата в масив наречен емайли.

http://pastebin.com/Gbkd3SQ8

Накрая печатя масива (друг вариант е направо да печатя без да пазя в масив).

 


от geniusvil (192 точки)


0

Много сложно я решавате тази задача. Аз просто разделих текста на думи и проверих дали в някоя дума има @.

 

http://pastebin.com/DUr6K4kA

Мисля, че работи добре...


от GeorgievG (85 точки)


0
Програмата ти вади и валиден мейл при: dd@yahoo, както и ако има повече от един @ символ. При резултатите в масива, на всеки елемент трябва да се направят допълнителни проверки за валидност.

от Tanis (75 точки)

0
Е да, прав си, ако трябва да проверявам дали са валидни. Предположих, че условието не го иска

от GeorgievG (85 точки)


0
Решено с Regex.
http://pastebin.com/wJh3BgV5

от hudsonvsm (25 точки)


0
аз реших малко по-интересно задачата и има доста неща за оправяне от към "библиотеката" за ".регион" обаче проверките ми решават задачата по учудващо лесен начин.
обче ако има гешки пишете feedback:
http://pastebin.com/TCiKnTFS

от kassskata (128 точки)


0

Ето моето решение: http://pastebin.com/YAmAJUj8

Използвам метод IsEmail като му подаваме стринг, който по даден MatchEmailPattern ми връща true/false ако дадения стринг е валиден емайл.


от triplexsa (60 точки)


0

В моето решение, използвам долния регулярен израз (който "хваща" и тирета) и ако веднага след domain-a има препинателен знак (".", ",", ";", "?" или "!"), го премахвам.

[\w., \-]{2,20}@[\w., \-]{2,20}[.]{1}[\w.]{2,6}


от gradev (1661 точки)