Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Удаление всех НЕ букв в строке
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
RazrFalcon
Нужно удалить все что не буквы aka [a-zA-Z]
Вот только смог str.remove(QRegExp("[^a-zA-Z]"));
а как сделать обратное?
sidsukana
str.remove(QRegExp("[^0-9]")); Не катит?
RazrFalcon
Я так понимаю это удалит цифры?!
А мне нужно всякие ;/"!@#$%^&
silver47
Цитата(RazrFalcon @ 14.1.2011, 3:18) *
Я так понимаю это удалит цифры?!
А мне нужно всякие ;/"!@#$%^&


Вот так, с ходу, в голову приходит только копирование во временную строку только букв. Лучше написать функцию типа
QString keepOnlyLetters(const &QString inputStr){
   ...
   return tmpStr;
}
RazrFalcon
проблема в том, что это огромный файл (0.5-2мб). Циклом будет 100 лет проверять.
Пробовал как обычно str.remove("/").remove(".")..... ; и для всех не нужных символов так. но виглядит это как то не труЪ.
RustNail
вариант QRegExp("\W") не подойдет?

\w
Matches a word character (QChar::isLetterOrNumber(), QChar::isMark(), or '_').

\W
Matches a non-word character.
RazrFalcon
Странно
str.remove(QRegExp("\w"));
ничего не делает, зато
str.remove(QRegExp("\\w"));
удаляет все буквы и цифры!
Что за?
К слову
str.count(QRegExp("\w"));
в моем случае выводит 1069 =/
str.count(QRegExp("\W"));
в моем случае выводит 0 =/
kwisp
RazrFalcon,
в С++ символ '\' экранирующий и чтоб его ввести в программу нужно его же заэкранировать.
в первом случае ты сделал регулярное выражение заэкранировав 'w' - что оно обозначет я не знаю.
во втором случае ты заэкранировал '\' и получил регулярное выражение которое как ты и хотел обозначает все буквы и цифры.
RazrFalcon
Ясно....
Так как надо записать, я не понял =/
RustNail
str.count(QRegExp("\\W"));
и чтобы удалить еще и цифры QRegExp("\\d")
RazrFalcon
str.remove(QRegExp("\\W"));
помогло, правда вместе с пробелами удаляет, можно как то исключить пробел из удаления?
RustNail
ну разве что попробовать что-то типа str.remove(QRegExp("\\W^\\s");
RazrFalcon
Вообще не на что не повлияло =(
DEADHUNT
"[^A-Za-z0-9_ ]"
RazrFalcon
Ура! готово.
str.remove(QRegExp("[^A-Za-z0-9_ ']"));
//удаляем все кроме пробелов и апострофов
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.