разбиение строк!, помогите правильно разбить строку на слова и выбросить лишнее |
Здравствуйте, гость ( Вход | Регистрация )
разбиение строк!, помогите правильно разбить строку на слова и выбросить лишнее |
piccoola |
24.8.2011, 20:24
Сообщение
#1
|
Новичок Группа: Новичок Сообщений: 1 Регистрация: 24.8.2011 Пользователь №: 2829 Спасибо сказали: 0 раз(а) Репутация: 0 |
Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zгрекаu
idhnr902Zвtyujnd734Zрекеouthck5520Zрак QRegExp reg (":[0-9]{3}Z"); QStringList lines = text.split(reg); if(int j =text.indexOf(reg)) { foreach (QString line, lines) { int i = j - 6; int k = 0; QString newline = line.mid(k-i).left(i); return newline; } } помогите пожалуйста разобраться, а то я совсем запуталась, надо разбить строку на другие строки и убрать лишние символы. я пробовала, пробовала и ника, там кусок того, что у меня получилось, но не работает(( выводит только первое слово отдельно... |
|
|
Алексей1153 |
25.8.2011, 14:19
Сообщение
#2
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
Цитата убрать лишние символы. а какие символы считаются лишними ? |
|
|
MJIbIu |
25.8.2011, 15:36
Сообщение
#3
|
Студент Группа: Участник Сообщений: 38 Регистрация: 14.4.2010 Пользователь №: 1630 Спасибо сказали: 3 раз(а) Репутация: 0 |
Цитата убрать лишние символы. а какие символы считаются лишними ? Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zгрекаu idhnr902Zвtyujnd734Zрекеouthck5520Zрак Ехал грека через реку видит в реке рак - мне кажется ему это надо получить остальное выкинуть QString r = "Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zг рекаuidhnr902Zвtyujnd734Zрекеouthck5520Zрак" return r.remove(QRegExp("[0-9][a-z][A-Z]")); что то придумал с ходу, мб я с RegExp напутал Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zгрекаu idhnr902Zвtyujnd734Zрекеouthck5520Zрак QRegExp reg (":[0-9]{3}Z"); QStringList lines = text.split(reg); if(int j =text.indexOf(reg)) { foreach (QString line, lines) { int i = j - 6; int k = 0; QString newline = line.mid(k-i).left(i); return newline; } } помогите пожалуйста разобраться, а то я совсем запуталась, надо разбить строку на другие строки и убрать лишние символы. я пробовала, пробовала и ника, там кусок того, что у меня получилось, но не работает(( выводит только первое слово отдельно... а зачем ты дела QString newline = line.mid(k-i).left(i); ?? если хочешь склеить list и получить string тогда не проще ли будет QString newline; foreach (QString line, lines) { newline+= line; } return newline; Сообщение отредактировал MJIbIu - 25.8.2011, 15:37 |
|
|
ilyabvt |
25.8.2011, 17:43
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Теперь каждое слово в отдельной строке. Цитата(MJIbIu) QRegExp("[0-9][a-z][A-Z]") двоеточие забыли убрать) Вы пошли от обратного, а это с моей точки зрения, в данном случае, не совсем хорошо, ибо вдруг текст в юникоде, тогда помимо английских букв, цифр и знаков препинания может встретится очень много других символов. P.S. Да буду очень признателен, если мне объяснят почему вот так работает:
а вот так нет:
Сообщение отредактировал ilyabvt - 25.8.2011, 18:26 |
|
|
Litkevich Yuriy |
26.8.2011, 5:42
Сообщение
#5
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
ilyabvt |
26.8.2011, 9:55
Сообщение
#6
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
символы с кодами выше latin1 требуют дополнительных телодвижений, так же как и вывод русского текста на виджетах, .... Раскрывающийся текст Ну для вывода русского на виджетах достаточно:
А какие телодвижения нужны тут? Хотя конечно можно написать например так:
но это не совсем то что я искал. P.S. прошу прощения за вопросы немного не по теме. Сообщение отредактировал ilyabvt - 26.8.2011, 10:06 |
|
|
Litkevich Yuriy |
26.8.2011, 20:30
Сообщение
#7
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
ilyabvt, ну если у тебя кодировка исходника задана явно, то имеет смысл обсудить. Тему после разделю (главное не смешивать в сообщениях, я их не могу разделить).
Яб так делал: Попробуй, будет ли польза?И, собственно, что значит не работает? |
|
|
ilyabvt |
26.8.2011, 21:37
Сообщение
#8
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата Яб так делал: if (str[i] >=QChar('А') && str[i] <=QChar('Я')) Попробуй, будет ли польза? Я уже так пробовал. Не помогает. Не работает, значит, даже если символ находиться в указанном диапазоне он все равно не проходит проверку. |
|
|
DOGG |
27.8.2011, 7:24
Сообщение
#9
|
Студент Группа: Участник Сообщений: 44 Регистрация: 9.8.2011 Из: Калининград Пользователь №: 2798 Спасибо сказали: 6 раз(а) Репутация: 0 |
Может быть вот так
if (str[i] >='а' && str[i] <='п' || str[i] >='р' && str[i] <='я') |
|
|
Litkevich Yuriy |
27.8.2011, 10:37
Сообщение
#10
|
разработчик РЭА Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: 94 |
|
|
|
Текстовая версия | Сейчас: 27.12.2024, 10:45 |