crossplatform.ru

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


  Ответ в разбиение строк!
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
ilyabvt Дата 27.8.2011, 10:59
 
Цитата
Может быть вот так
if (str[i] >='а' && str[i] <='п' || str[i] >='р' && str[i] <='я')

И где логика?
Цитата
условие ложно или наоборот истино?

Условие ложно, в то время как должно быть истинно. В случае со строкой "Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zг
рекаuidhnr902Zвtyujnd734Zрекеouthck5520Zрак" вообще не один символ не удовлетворил условиям, хотя по идее должны были пройти все русские буквы.
Litkevich Yuriy Дата 27.8.2011, 10:37
 
Цитата(ilyabvt @ 27.8.2011, 0:37) *
он все равно не проходит проверку
условие ложно или наоборот истино?
DOGG Дата 27.8.2011, 7:24
  Может быть вот так
if (str[i] >='а' && str[i] <='п' || str[i] >='р' && str[i] <='я')
ilyabvt Дата 26.8.2011, 21:37
 
Цитата
Яб так делал:
if (str[i] >=QChar('А') && str[i] <=QChar('Я'))
Попробуй, будет ли польза?

Я уже так пробовал. Не помогает.
Не работает, значит, даже если символ находиться в указанном диапазоне он все равно не проходит проверку.
Litkevich Yuriy Дата 26.8.2011, 20:30
  ilyabvt, ну если у тебя кодировка исходника задана явно, то имеет смысл обсудить. Тему после разделю (главное не смешивать в сообщениях, я их не могу разделить).

Яб так делал:
if (str[i] >=QChar('А') && str[i] <=QChar('Я'))
Попробуй, будет ли польза?

И, собственно, что значит не работает?
ilyabvt Дата 26.8.2011, 9:55
 
Цитата(Litkevich Yuriy @ 26.8.2011, 9:42) *
символы с кодами выше latin1 требуют дополнительных телодвижений, так же как и вывод русского текста на виджетах, ....

Раскрывающийся текст

Ну для вывода русского на виджетах достаточно:
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));

А какие телодвижения нужны тут? Хотя конечно можно написать например так:
if (QString(str[i]) >="А" && QString(str[i]) <="я")

но это не совсем то что я искал.
P.S. прошу прощения за вопросы немного не по теме.
Litkevich Yuriy Дата 26.8.2011, 5:42
 
Цитата(ilyabvt @ 25.8.2011, 20:43) *
а вот так нет:
символы с кодами выше latin1 требуют дополнительных телодвижений, так же как и вывод русского текста на виджетах, ....
ilyabvt Дата 25.8.2011, 17:43
 
   
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("UTF-8"));
QString str = "Ехалsghffg000:Zгрекаyfhkkl907Zчерезdxsvhy897Zрекуtyfdvh657Zвидитighjky843Zгрекаuidhnr902Zв
tyujnd734Zрекеouthck5520Zрак";
 QString temp = "";
for (int i=0; i < str.length(); i++) {
      //собираем слово по буквам, оставляю только русские
      //1040 - код символа 'А', 1103 - 'я'
      if (str[i].unicode() >=1040 && str[i].unicode() <=1103) {
         temp = temp + str[i];
      }
      //сбрасываем слово в текстовое поле
      else if (temp != "") {
         widget.textEdit->append(temp);
         temp="";
      }
}
//если строка кончалась на русскую букву то в цикле последнее слово не успеет сброситься поэтому осуществляем проверку
if (temp != "") {
      widget.textEdit->append(temp);
      temp="";
}

Теперь каждое слово в отдельной строке.

Цитата(MJIbIu)
QRegExp("[0-9][a-z][A-Z]")

двоеточие забыли убрать)
Вы пошли от обратного, а это с моей точки зрения, в данном случае, не совсем хорошо, ибо вдруг текст в юникоде, тогда помимо английских букв, цифр и знаков препинания может встретится очень много других символов.

P.S. Да буду очень признателен, если мне объяснят почему вот так работает:
if (str[i] >='A' && str[i] <='Z')

а вот так нет:
if (str[i] >='А' && str[i] <='Я')
MJIbIu Дата 25.8.2011, 15:36
 
Цитата(Алексей1153 @ 25.8.2011, 15:19) *
Цитата
убрать лишние символы.

а какие символы считаются лишними ? :)

Цитата(piccoola @ 24.8.2011, 21:24) *
Ехал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 напутал

Цитата(piccoola @ 24.8.2011, 21:24) *
Ехал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;
Алексей1153 Дата 25.8.2011, 14:19
 
Цитата
убрать лишние символы.

а какие символы считаются лишними ? :)
Просмотр темы полностью (откроется в новом окне)
RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 24.7.2025, 1:04