crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

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


Последние 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 Текстовая версия Сейчас: 30.5.2020, 13:52