Титла: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 08, 2011, 04:09 Добър вечер (той май е нощ ама това е друг въпрос ;D)
Имам следния въпрос: Имам QLineEdit който има информация и на латиница и на кирилица. Как мога да направя така че в нов QString да записвам информацията на латиница, а тая на кирилица - да изчезне? Благодаря предварително! Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 10:40 Виж този пример ($2) от документацията. Само трябва да си направиш regexp за буквите на кирилица.
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 08, 2011, 15:58 Въпроса е как да стане, при положение че не се приема кирилица написана в текстовия редактор?
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: task_struct в Jan 08, 2011, 16:23 Въпроса е как да стане, при положение че не се приема кирилица написана в текстовия редактор? Лесно :) Направи регулярен израз, който описва какво е позволено. Всеки стринг, които не мине се отхвърля ;) Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 17:29 @LinuxFanUNIX: Кирилицата се приема лесно. Ако изходният код ти е в utf8, то създаването на стринг за регулярния израз, трябва да стане чрез
Код: Qstring regexp = QString::fromUtf8("[а-яА-Я]"); Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: b2l в Jan 08, 2011, 17:32 @LinuxFanUNIX: Кирилицата се приема лесно. Ако изходният код ти е в utf8, то създаването на стринг за регулярния израз, трябва да стане чрез Не е ли така: Код: Qstring regexp = QString::fromUtf8("[а-яА-Я]\u"); Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: task_struct в Jan 08, 2011, 17:39 @LinuxFanUNIX, предполагам, че целта ти е да ограничиш полето да се въвеждат само латински букви и цифри. Защото ако премахнеш кирилицата, аз лесно мога да си сложа китайки примерно и да въвеждам негови знаци ;) За това по-добре направи израза със символите, които искаш, а не с тези, които не искаш :)
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: b2l в Jan 08, 2011, 17:50 Или както каза Георги Чорбаджийски на една лекция по security issues:
Цитат Проверявайте за вярно въведени данни, не за грешно въведени. Ако полето е само за букви - няма да проверяваш дали са въведени числа, специални символи и т.н., а всичко което не е буква отива в else-а. Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 18:55 @backtolife: Това
Код: \u @LinuxFanUNIX: Ако идеята ти е в QLineEdit да се въвежда само латински букви, сложи му регулярен израз за това. Ако идеята ти е да може да се въвежда всичко, но да вземеш само латинските букви, може да пробваш това Код: QRegExp("(?![A-Za-Z])") Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: b2l в Jan 08, 2011, 18:59 @backtolife: Това RTFM @LinuxFanUNIX: Ако идеята ти е в QLineEdit да се въвежда само латински букви, сложи му регулярен израз за това. Ако идеята ти е да може да се въвежда всичко, но да вземеш само латинските букви, може да пробваш това Абе тука не се ли използва POSIX стандарта? Как така ще слагаш удивителна ( ! )пред регулярен израз? Слага се ^. PS: Точно так Qt използва POSIX стандарт. За какво го бъркаш само момчето??? Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 19:25 @backtolife: Защо смяташ, че не съм го направил, преди да те попитам? Само за твоя информация търсенето в документацията за \u не намери нищо.
По отношение на втората ти бележка удивителната не е пред регулярния израз, а част от него. Ако се чудиш какво прави, ето какво казва документацията ($2) Цитат (?!E) Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: b2l в Jan 08, 2011, 19:35 @backtolife: Защо смяташ, че не съм го направил, преди да те попитам? Само за твоя информация търсенето в документацията за \u не намери нищо. Човек, ти писал ли си регулярни изрази някога? Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: borovaka в Jan 08, 2011, 19:49 backtolife ! е логическо НЕ в израза.
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 21:40 @LinuxFanUNIX: Всъщност това, което съм ти предложил в предишния отговор няма да работи, защото в регулярния израз няма нищо за match-ване. Нещо съм се разсеял и съм ти написал lookahead част. Това, което ти трябва е
Код Когато ползваш remove с регулярен израз бъде внимателен какво пишеш, ако ще match-ваш 2 и повече символа, защото функцията прави викане към replace. //offtopic @backtolife: Никога в живота си не съм виждал регулярни изрази, камо ли пък да ги пиша. Важното в случая е, че човека ще си свърши работата. Тъжно е, че такива експерти в регулярните като теб изрази не допринесоха с нищо към това, а само влошиха отношението сигнал-шум във форума. Извинявай за сарказма. Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 08, 2011, 23:19 Благодаря на всички за отговорите и се извинявам ако съм аз причината да се скарате :)
Така - последвах логиката на Георги Чорбаджийски от мнението на backtolife, но подобно на dvasilev - и аз мразя регулярните изрази, тъй че си направих собствена логика от няколко редчета: Код
По този начин аз не "гоня" никои букви, просто допускам буквите от A до Z (голям и малък формат), цифри (0-9), интервали и някои знаци като кавички, двуеточие и т.н.! Едно огромно благодаря за съветите! И моля Ви - не се карайте... Животът е само един! ;) Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 08, 2011, 23:46 @LinuxFanUNIX: Не мразя регулярните изрази, ползвам ги с кеф, където мога. Аналогът на това, което си написал е:
Код
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 09, 2011, 04:31 Имам html страница. И искам от нея да взема всички линкове, сочещи към снимки качени на даден сървър...
Пример: <HTML><HEAD> ... <div> <div> ... <IMG SRC="http://www.weblo.com/asset_images/НЯКАКВО ИМЕ.JPG>" И на мен да ми изведе в един QStringList всички снимки качени на http://www.weblo.com/asset_images! Благодаря ти предварително! Знам че ще се справиш! ;) Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 09, 2011, 12:11 @LinuxFanUNIX: Ако това е целта на цялото упражнение, налей си html-а в един QWebFrame, от там много лесно може да извадиш src атрибутите на img таговете. След това лесно ще си match-неш url-тата на картинките, които те интересуват. Ако нещо не е ясно как става, питай?
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 09, 2011, 15:00 @LinuxFanUNIX: Ако това е целта на цялото упражнение, налей си html-а в един QWebFrame, от там много лесно може да извадиш src атрибутите на img таговете. След това лесно ще си match-неш url-тата на картинките, които те интересуват. Ако нещо не е ясно как става, питай?За принципа се сещам, обаче на практика не мога да приложа. Ето какво опитвам, но все удрям на камък: Код
Та, ако може малко да помогнеш, ще съм ти благодарен... :) Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: dvasilev в Jan 09, 2011, 16:37 @LinuxFanUNIX: Нещо от сорта би трябвало да ти свърши работа:
Код
Титла: Re: Премахване на кирилски букви от поле за въвеждане на текст (QLineEdit) Публикувано от: LinuxFanUNIX в Jan 10, 2011, 03:16 Благодаря ти много, dvasilev! Имаш моите най-искрени благодарности! Жив и здрав дълги години! ;) [_]3 ::)
|