Название: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Декабрь 15, 2016, 22:42 Здравствуйте!
Нужна помощь в написании простой программки. Имеется текст созданный другой прогой. Пример текста: Мука: 1.002.550 Рис: 3.062.550 Пшено: 110 и т.д. Хотел сделать самым простым и понятным для всех способом, но не нашёл как это сделать. т.е. я так понимаю забить весь текст в матрицу и перемещать курсор и проверять символ М+у+к+а, если истина то переместить курсор до начала цифры после найденного слова и вывести значение в lineEdit=1.002.550 потом убрать все точки чтобы не мешало считать итого. И так для каждого слова делать поиск. Нашёл способ через QString. Делаю поиск слова Мука Код: void MainWindow::on_pushButton_clicked() s1.remove("."); // удаляет все точки Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: qate от Декабрь 15, 2016, 23:06 понаписал ничего не понятно
убери точки и двоеточия - вот твой ответ, на твой вопрос ) Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Декабрь 15, 2016, 23:48 если я правильно понял задачу, надо из каждой строки вытащить число без точек. например, вот 2 способа:
0) предварительно разбить весь текст на строки 1) найти число с помощью регулярки QRegExp rx("\\d[\\d.]*"), отрезать из него точки через rx.cap(0).remove("."); 2) банально пройтись по строке циклом и построить новую строку из чисел: Код
Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Декабрь 16, 2016, 00:25 если я правильно понял задачу, надо из каждой строки вытащить число без точек. например, вот 2 способа: 0) предварительно разбить весь текст на строки 1) найти число с помощью регулярки QRegExp rx("\\d[\\d.]*"), отрезать из него точки через rx.cap(0).remove("."); 2) банально пройтись по строке циклом и построить новую строку из чисел: Код
Вот примерно то что искал. А зачем разбивать текст на строки? он ведь и так имеет строки с наименованием товара. Только надо расставить в свои edit`ы. 1 edit Мука: 2edit Кол-во и так на 6 наименований. Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Декабрь 16, 2016, 01:50 насколько я понял, ui->textEdit содержит в себе весь этот текст
Цитировать Мука: 1.002.550 но надо ж каждую строчку отдельно рассматриватьРис: 3.062.550 Пшено: 110 Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Декабрь 16, 2016, 09:44 Код: QStringList line = s1.split('\n'); //разбил на строки Ругается на .isDigit Цитировать bool QChar::isDigit () const Передвигаюсь по строкам Returns true if the character is a decimal digit (Number_DecimalDigit); otherwise returns false. Код: for (int i=0; i<=line.size();i++) Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Декабрь 16, 2016, 17:21 < line.size(), а не <=. Хотя непонятно зачем нужен двойной цикл.
Ругается на .isDigit — как именно? В чём ошибка? — без кода непонятно. Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Декабрь 16, 2016, 17:56 если делаю < line.size() то одну строку не считает, хотя с рабоче программой нужно будет проверить.
На сколько я понял в line хранится инфа по строчно. В первом цикле я перемещаюсь сверху вниз с первой строки line[0] до [максимума], а во втором я пробую перемещаться по строке слева на право и искать нужно слово и цифры. Цитировать 2) банально пройтись по строке циклом и построить новую строку из чисел: хотя пробовал и rx обрабатывать строку. Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Декабрь 16, 2016, 18:33 твой QStringList хранит строчки (например, один из элементов — «Мука: 1.002.550»), лучше обозвать эту переменную lines или lineList. А дальше ты проходишь по символам каждой строки.
Код можно вообще без индексов обойтись используя range-based for из С++11 либо foreach/Q_FOREACH Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Декабрь 17, 2016, 01:49 Спасибо этот вариант хорошо работает с цифрами.
Буду искать для себя более понятный метод поиска Слова. И обработку возможных ошибок: если в строке несколько элементов. Мука: 5.062.550Рис: 5.062.550 Кукуруза: 1.000 Фасоль: 2 Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Январь 06, 2017, 23:23 Подскажите, проблема при поиске русских букв.
предупреждение: multi-character character constant [-Wmultichar] if (bukv == 'Рњ') ^ Код:
Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Январь 07, 2017, 00:27 можно попробовать
Код но наверное лучше QChar(<тут hex-код буквы М из таблицы юникода>) Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: Aleksei от Январь 10, 2017, 00:35 Нет так не работает. А без юникода никак?
Почему такие сложности? Название: Re: Из текста найти слова и цифры заполнить ими lineEdit Отправлено: kambala от Январь 11, 2017, 01:01 никак. так устроен юникод и QString/QChar.
для буквы М используй QChar(0x041C). http://www.fileformat.info/info/unicode/char/041c/index.htm |