Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Qt и кроссплатформенное программирование С/С++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2020, 11:01   #1
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию как обрезать подстроку в qt

Вообщем я учусь делать макросы в qt и саму запись я сделал и чтение строки из файла тоже, но когда строку я разделил на части, а как эти куски еще раз разрезать я не могу понять как. Вот сам файл macros.zip. У меня есть к примеру вот такая строка:
Work 1,54;Job 2,64;Woking 3,53;Privet 4,64
и я ее разрезаю на 4 части "Work 1,54;" "Job 2,64;" "Woking 3,53;" "Privet 4,64"
ну или меньше или больше данные будут разные и уже не слова а реальные команды, но все отделяются ";". Так вот мне нужно например из "Work 1,54;" достать число находящиеся между запятой и ";" и так всю строку. Потом бы я это вставлял в qlineedit.
илья123456 вне форума Ответить с цитированием
Старый 18.02.2020, 12:16   #2
Subst
Пользователь
 
Регистрация: 30.01.2020
Сообщений: 54
По умолчанию

Split работает и по QRegularExpression/QRegExp

примерно так

QString subSrtring("Woking 3,53");
QRegExp regexp(" |,|;");
regexp.setMinimal(true);

QStringList substrings=subString.split(regexp,Q String::skipEmptyParts);
получишь Working;3;53
Subst вне форума Ответить с цитированием
Старый 18.02.2020, 12:30   #3
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Subst Посмотреть сообщение
Split работает и по QRegularExpression/QRegExp

примерно так

QString subSrtring("Woking 3,53");
QRegExp regexp(" |,|;");
regexp.setMinimal(true);

QStringList substrings=subString.split(regexp,Q String :: SkipEmptyParts);
получишь Working;3;53
Вот смотрите и после этого я получается буду каждый раз брать третий элемент из всего?
илья123456 вне форума Ответить с цитированием
Старый 18.02.2020, 14:27   #4
илья123456
Пользователь
 
Регистрация: 14.05.2014
Сообщений: 29
По умолчанию

Цитата:
Сообщение от Subst Посмотреть сообщение
Split работает и по QRegularExpression/QRegExp

примерно так

QString subSrtring("Woking 3,53");
QRegExp regexp(" |,|;");
regexp.setMinimal(true);

QStringList substrings=subString.split(regexp,Q String::skipEmptyParts);
получишь Working;3;53
Спасибо за помощь )
Код:
    QModelIndex indK = ui->listWidget->currentIndex();
    QString itemText = indK.data(Qt::DisplayRole).toString();
    QRegExp regexp(" |,|;");
    regexp.setMinimal(true);
    int WORK = itemText.indexOf("Work");
    int JOB = itemText.indexOf("Job");
    int WORKING = itemText.indexOf("Woking");
    int PRIV = itemText.indexOf("Privet");
    
    int endwork = itemText.indexOf(";", WORK);
    int endjob = itemText.indexOf(";", JOB);
    int endworking = itemText.indexOf(";", WORKING);
    int endprivet = itemText.indexOf(";", PRIV);

    QString wok = itemText.mid(WORK, endwork-WORK);
    QString jo = itemText.mid(JOB, endjob - JOB);
    QString woking = itemText.mid(WORKING, endworking - WORKING);
    QString priva = itemText.mid(PRIV, endprivet - PRIV);
  qDebug () << wok ;
  qDebug () << jo  ;
  qDebug () << woking;
  qDebug () << priva;
    if (wok != "" ){
        QString subSrtring(wok);
        QStringList substrings= subSrtring.split(regexp,QString :: SkipEmptyParts);
       // qDebug () << substrings << "1";
       // qDebug () << substrings[0];
        if (substrings[0] == "Work")
        {
            wok = substrings[2];
            qDebug () << wok;
            ui->lineEdit->setText(wok);
        }

    }else {ui->lineEdit->setText("");}
   if (jo != ""){
        QString subSrtring1(jo);
         QStringList substrings1= subSrtring1.split(regexp,QString :: SkipEmptyParts);
        //qDebug () << substrings1 << "2";
        // qDebug () << substrings1[0];
         if (substrings1[0] == "Job")
         {
            jo = substrings1[2];
               qDebug () << jo;
            ui->lineEdit_2->setText(jo);
         }
    }else {ui->lineEdit_2->setText("");}
    if (woking != ""){
        QString subSrtring2(woking);
        QStringList substrings2= subSrtring2.split(regexp,QString :: SkipEmptyParts);
        //qDebug () << substrings2 << "3";
        //qDebug () << substrings2[0];
        if (substrings2[0] == "Woking")
        {
            woking = substrings2[2];
               qDebug () <<  woking;
            ui->lineEdit_3->setText(woking);
        }
    }else {ui->lineEdit_3->setText("");}
    if (priva != ""){
        QString subSrtring3(priva);
        QStringList substrings3= subSrtring3.split(regexp,QString :: SkipEmptyParts);
        //qDebug () << substrings3 << "4";
       // qDebug () << substrings3[0];
        if (substrings3[0] == "Privet")
        {
           priva = substrings3[2];
               qDebug () <<  priva;
           ui->lineEdit_4->setText(priva);
        }
    }else {ui->lineEdit_4->setText("");}
а забыл тут условия " if (substrings3[0] == "Privet")" убрать не нужны)

Последний раз редактировалось илья123456; 18.02.2020 в 14:30.
илья123456 вне форума Ответить с цитированием
Старый 18.02.2020, 14:28   #5
Subst
Пользователь
 
Регистрация: 30.01.2020
Сообщений: 54
По умолчанию

Ну как резать будешь, смотри какой элемент надо.
Можешь сам разобрать строку

QString result=QString();
for (int i=subString.size()-1;i>-1;i--)
{
if (subString.at(i)!=QChar(";")
result.prepand(subString.at(i));
else
break;
}

Можешь взять

subString.Right(subString.size()-subString.lastIndexOf(";")-1) - получишь 53

Ну вариантов море. И, кстати, Ассистант - полезная штука
Subst вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скопировать подстроку Bayern_M Общие вопросы C/C++ 8 14.10.2017 08:06
Подстроку из строки kostya67 C# (си шарп) 1 15.09.2014 19:33
Обрезать Url C# vprsc Помощь студентам 1 28.01.2013 06:14
Выделить подстроку Jeniuz Общие вопросы C/C++ 1 04.12.2009 18:25
удалить подстроку в VBA AnnNet Помощь студентам 1 19.01.2009 16:59