crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

2 страниц V   1 2 >  
Ответить в данную темуНачать новую тему
> Удаление всех НЕ букв в строке
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 0:36
Сообщение #1


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Нужно удалить все что не буквы aka [a-zA-Z]
Вот только смог str.remove(QRegExp("[^a-zA-Z]"));
а как сделать обратное?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
sidsukana
  опции профиля:
сообщение 14.1.2011, 0:40
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 158
Регистрация: 23.12.2010
Из: Челябинск
Пользователь №: 2296

Спасибо сказали: 10 раз(а)




Репутация:   2  


str.remove(QRegExp("[^0-9]")); Не катит?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 1:18
Сообщение #3


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Я так понимаю это удалит цифры?!
А мне нужно всякие ;/"!@#$%^&
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
silver47
  опции профиля:
сообщение 14.1.2011, 8:13
Сообщение #4


Активный участник
***

Группа: Участник
Сообщений: 356
Регистрация: 1.4.2010
Пользователь №: 1584

Спасибо сказали: 40 раз(а)




Репутация:   6  


Цитата(RazrFalcon @ 14.1.2011, 3:18) *
Я так понимаю это удалит цифры?!
А мне нужно всякие ;/"!@#$%^&


Вот так, с ходу, в голову приходит только копирование во временную строку только букв. Лучше написать функцию типа
QString keepOnlyLetters(const &QString inputStr){
   ...
   return tmpStr;
}
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 13:47
Сообщение #5


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


проблема в том, что это огромный файл (0.5-2мб). Циклом будет 100 лет проверять.
Пробовал как обычно str.remove("/").remove(".")..... ; и для всех не нужных символов так. но виглядит это как то не труЪ.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_RustNail_*
сообщение 14.1.2011, 14:13
Сообщение #6





Гости








    


вариант QRegExp("\W") не подойдет?

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

\W
Matches a non-word character.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 14:50
Сообщение #7


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Странно
str.remove(QRegExp("\w"));
ничего не делает, зато
str.remove(QRegExp("\\w"));
удаляет все буквы и цифры!
Что за?
К слову
str.count(QRegExp("\w"));
в моем случае выводит 1069 =/
str.count(QRegExp("\W"));
в моем случае выводит 0 =/

Сообщение отредактировал RazrFalcon - 14.1.2011, 14:51
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kwisp
  опции профиля:
сообщение 14.1.2011, 14:56
Сообщение #8


астарожна ынтжинэр
*****

Группа: Участник
Сообщений: 1404
Регистрация: 26.11.2008
Из: ТаганрогРодинаЧехова
Пользователь №: 435

Спасибо сказали: 113 раз(а)




Репутация:   23  


RazrFalcon,
в С++ символ '\' экранирующий и чтоб его ввести в программу нужно его же заэкранировать.
в первом случае ты сделал регулярное выражение заэкранировав 'w' - что оно обозначет я не знаю.
во втором случае ты заэкранировал '\' и получил регулярное выражение которое как ты и хотел обозначает все буквы и цифры.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
RazrFalcon
  опции профиля:
сообщение 14.1.2011, 15:13
Сообщение #9


Zombie Mod
*****

Группа: Участник
Сообщений: 1654
Регистрация: 24.5.2010
Из: Харьков
Пользователь №: 1752

Спасибо сказали: 64 раз(а)




Репутация:   212  


Ясно....
Так как надо записать, я не понял =/
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Гость_RustNail_*
сообщение 14.1.2011, 15:14
Сообщение #10





Гости








    


str.count(QRegExp("\\W"));
и чтобы удалить еще и цифры QRegExp("\\d")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 26.12.2024, 19:01