Strings and Text Processing - Homework - 2015


6

Дойде времето и на класове и обекти, затова да пуснем и следващата тема в обръщение :) (с поздрав към @mihaylov ). Нека по-нетърпеливите да споделят решенията си, за да са в полза на колектива :)

Пускам моите ТУК :)



в C# Advanced от dentia (12519 точки)


Отговори



2
Ето моите решения: CLICK

от lnikod4s (6538 точки)


0
Супер добре си решил задачата с брекетите бая я мъдрих как да стане. :)

от a.sideriss (450 точки)

1
На задача 13, кодът ми изглждаше перфектен (кратък и ясен), но има проблем със запетаята. Както си написал програмата, тя отива след C++, а би трябвало да е след второто not.

от boyan.slavov (20 точки)


3
Ето и моите (мерси за поздрава :Д :Д, да знаеш, че не се заяждам, във форумите лесно стават обърквания  ).

от mihaylov (409 точки)


2
Ако мислех, че се заяждаш, нямаше да имаш поздрав :Р

от dentia (12519 точки)

1
Колега, на 5та задача ParseTags ти прави текста с главни букви без значение дали тага ти е <upcase> или <NaBayIvanRakiata> :D :)))

от stoimeniliev (580 точки)


1
Ето и моето домашно като не съм използвал Regular Expressions с изключение на някой от задачите, които изискват pattern за проверка (тези с email и html текст екстрактването).

от baretata (934 точки)


2
Тази с html екстрактването става много лесно като използваш класа Uri :)

от dentia (12519 точки)

1
Интересен вариант, ще се разровя за малко повече информация.

от baretata (934 точки)



1
Ето и от мене Цък



1
Тук са моите решения.

от ageorgiev (552 точки)


1
Здрасти, на задачата ExtractSentences  ако едно изречение започва с  въведената дума, то няма да бъде принтирано, защото думата ще започва с голяма буква. Също така, ако думата е на края на изречението, ще следва "." и пак няма да бъде принтирано. Може да провериш 2 думи. Например ако думата е "ние", виж "Ние " и " ние". 

от antoanelenkov (1047 точки)


1

Не - изреченията се сплитват по точка, т.е. тя не оказва влияние. :) По-скоро не съм обърнала внимание на други видове пунтуация като удивителни, запетайки, въпросителни, тирета и т.н.

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

Единственото, което трябва да се направи, е да се зададе опция за case insensitive match-ване - тeзи дни ще го оправя. :)

//Edit: пооправих го набързо. Съвсем възможно е още да не работи на 100%. :)


от dentia (12519 точки)


0

 ExtractSentences с RegEx :

string word = @"(?i)(\bin\b)"; // case insensitive

string pattern = @"\s*([^\.]*" + word + @".*?\.)"

и отпечатвате резултата от група 1.

За RegEx чета от тук.


от Boray (666 точки)


0

Може ли някой запознат с Regex накратко да обясни как работи или да посочи добър източник-четиво.Примерно този ред код в задачата ParseTags искам да разбера значението на (.*?) ?:

Regex.Replace(text, @"<upcase>(.*?)</upcase>", delegate(Match match);

Какво значи (.*?) ,където трябва съответстващата дума да бъде с главни букви само?


от IvayloAndonov (1994 точки)


0

Здравей, колега!

Препоръчвам ти online regex tester tool като https://regex101.com/ или ако предпочиташ софтуерен продукт, погледни http://www.ultrapico.com/.

Иначе твоя регекс означава следното:

1st Capturing group (.*?)
  • .*? matches any character (except newline)
    • Quantifier: *? Between zero and unlimited times, as few times as possible, expanding as needed [lazy]


от lnikod4s (6538 точки)

3

Аз ползвам regexr,  ако ти е любопитно. 

Иначе по-интересната част, според мен, е делегатът. Хвърли един поглед в MSDN. По-нататък като дойде js може да влезе отново в полза. :)


от dentia (12519 точки)


1
Ето  и моите решения. :)

от antoanelenkov (1047 точки)


0
Колега, понеже прегледах твоите решения,че се чудих за 18та задача. Според мен в условието не пише,че mail-ите са във формат "дкскдск@кск.нет" ,тоест с кавички. По -вероятно е да са: /mymail@mail.bg. Някакъв текст тук/. Т.е. според мен хубаво си взимаш думичките с '@', но след това трябва да махнеш евентуалният препинателен знак накрая. Ако смяташ,че съм прав - има време да се поправи :)

от vvn050 (593 точки)


1

Интересно домашно,повечето задачи могат да се решат по доста различни начини.Имах и някои затруднения със екстрактването на определена част .Извода е един - да се научи Regex .Задача от 50 реда код,с негова помощ може да се съкрати на 4 реда. И все пак става и по малко по-труения начин.Имаше и елементарни задачи измежду тях.

ТОВА са решенията ми. Поздрави


от IvayloAndonov (1994 точки)


2

Да, регексът е супер, но понякога се надценява. :)

Иначе - задачата за обръщане на изречението се оказва малко по-слобна отколкото изглежда - трябва да се запази пунктуацията на мястото, на което е в оригиналното решение. Например, ако след 4та дума има запетая, тази запетая трябва да остане след 4та дума и след обръщанео на последователността от думи :)


от dentia (12519 точки)

0
Мисля, че основното ти решение наProblem 6. String length не работи коректно: Ако инпут-а ти е с дължина >20, замества всички символи след 20-я със "*", а не такава е целта на задачата. Виж го отново. Допълнителното решение обаче е ОК :)

от Bizuuu (95 точки)