2016-07-08 5 views
-1

Я работаю над QT и C++. В рамках тестового проекта мне нужно получить подстроку из сложной и длинной строки, в основном это источник веб-страницы. Если мой вопрос выглядит очень тривиально, это будет потому, что я наивный программист qt и у меня меньше опыта регулярных выражений.Как получить сложную подстроку с помощью qt?

Строка: "url_encoded_fmt_stream_map": "Тип = видео% 2Fwebm% 3B + Кодеки% 3D% 22vp8.0% 2C + Vorbis% 22 \ u0026quality = средняя \ u0026itag = 43 \ u0026url = HTTPS% 3A % 2F% 2Fr2 --- sn-ci5gup-qxaz.googlevideo.com% 2Fvideoplayback% 3Fmime% 3Dvideo% 252Fwebm% 26key% 3Dyt6% 26initcwndbps% 3D386250% 26pcm2cms% 3Dyes% 26requiressl% 3Dyes% 26signature% 3D05FB41F2F9FF5490841C7B9F40748FC4B8F505A3.0D81AB0745519F179CBF4468D2412C2240DC72F0% 26ratebypass% 3Dyes % 26fexp% 3D3300119% 252C3300131% 252C3313268% 252C9405961% 252C9416126% 252C9416891% 252C9419451% 252C9422342% 252C9422596% 252C9427790% 252C9428398% 252C9431012% 252C9433096% 252C9433380% 252C9433855% 252C9433946% 252C9434332% 252C9435526% 252C9435667% 252C9435876% 252C9436270% 252C9436607% 252C9436834% 252C9436872 % 252C9436973% 252C9437066% 252C9437553% 252C9437742% 252C 9438326% 252C9439652% 252C9439979% 252C9440048% 252C9440552% 252C9440651% 26ms% 3Dau% 26mt% 3D1467900993% 26sparams% 3Ddur% 252Cid% 252Cinitcwndbps% 252Cip% 252Cipbits% 252Citag% 252Clmt% 252Cmime% 252Cmm% 252Cmn% 252Cms% 252Cmv% 252Cpcm2cms% 252Cpl% 252Cratebypass% 252Crequiressl% 252Csource% 252Cupn% 252Cexpire% 26mv% 3DM% 26ip% 3D182.68.203.45% 26id% 3Не-AMB0Fggb71vKhXSdQqcOPdLeb9v0n2GaibsWg_W5L5b7% 26мм% 3D31% 3Dsn% 26 млн-ci5gup-qxaz% 26upn% 3Dfri9F8GP9uA% 26source% 3Dyoutube% 26itag% 3D43% 26pl% 3D20% 26lmt% 3D1445550849945309% 26expire% 3D1467922869% 26sver% 3D3% 26ipbits% 3D0% 26dur% 3D0.000, тип = видео% 2Fmp4% 3B + кодеки% 3D% 22avc1.42001E% 2C + mp4a.40.2% 22 \ u0026quality = medium \ u0026itag = 18 \ u0026url = https% 3A% 2F% 2Fr2 --- sn-ci5gup-qxaz.googlevideo.com% 2Fvideoplayback% 3Fmime% 3Dvideo% 252Fmp4% 26key% 3Dyt6% 26initcwndbps% 3D386250% 26pcm2cms% 3Dyes% 26requiressl% 3Dyes% 26signature% 3D4C90C634F68098572BDCA7D5B7946F8A49A17369.D4AB7172922F499596226BA335BDF0B4519A4AC6% 26ratebypass% 3Dyes% 26fexp% 3D33001 19% 252C3300131% 252C3313268% 252C9405961% 252C9416126% 252C9416891% 252C9419451% 252C9422342% 252C9422596% 252C9427790% 252C9428398% 252C9431012% 252C9433096% 252C9433380% 252C9433855% 252C9433946% 252C9434332% 252C9435526% 252C9435667% 252C9435876% 252C9436270% 252C9436607% 252C9436834% 252C9436872% 252C9436973% 252C9437066% 252C9437553% 252C9437742% 252C9438326% 252C9439652% 252C9439979% 252C9440048% 252C9440552% 252C9440651% 26ms% 3Dau% 26mt% 3D1467900993% 26sparams% 3Ddur% 252Cid% 252Cinitcwndbps% 252Cip% 252Cipbits% 252Citag% 252Clmt% 252Cmime% 252Cmm% 252Cmn% 252Cms% 252Cmv% 252Cpcm2cms% 252Cpl% 252Cratebypass% 252Crequiressl% 252Csource% 252Cupn% 252Cexpire% 26mv% 3DM% 26ip% 3D182.68.203.45% 26id% 3Не-AMB0Fggb71vKhXSdQqcOPdLeb9v0n2GaibsWg_W5L5b7% 26мм% 3D31% 3Dsn% 26 млн-ci5gup-qxaz% 26upn% 3Dfri9F8GP9uA% 26source% 3Dyoutube% 26itag% 3D18% 26pl% 3D20% 26lmt% 3D1465194153116908% 26expire% 3D1467922869% 26sver% 3D3% 26ipbits% 3D0% 26dur% 3D207.354, тип = видео% 2F3gpp% 3B + кодеки% 3D% 22mp4v.20.3% 2C + mp4a.40.2% 22 \ u0026quality = small \ u0026itag = 36 \ u0026url =

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

подстроки:

HTTPS% 3A% 2F% 2Fr2 --- sn-ci5gup-qxaz.googlevideo.com% 2Fvideoplayback% 3Fmime% 3Dvideo% 252Fwebm% 26key% 3Dyt6% 26initcwndbps% 3D386250% 26pcm2cms% 3Dyes% 26requiressl% 3Dyes% 26signature% 3D05FB41F2F9FF5490841C7B9F40748FC4B8F505A3.0D81AB0745519F179CBF4468D2412C2240DC72F0% 26ratebypass% 3Dyes% 26fexp% 3D3300119% 252C3300131% 252C3313268% 252C9405961% 252C9416126% 252C9416891% 252C9419451% 252C9422342% 252C9422596% 252C9427790% 252C9428398% 252C9431012% 252C9433096% 252C9433380% 252C9433855% 252C9433946% 252C9434332% 252C9435526% 252C9435667% 252C9435876% 252C9436270% 252C9436607% 252C9436834% 252C9436872% 252C9436973% 252C9437066% 252C9437553% 252C9437742% 252C9438326% 252C9439652% 252C9439979% 252C9440048% 252C9440552% 252C94406 51% 26ms% 3Dau% 26mt% 3D1467900993% 26sparams% 3Ddur% 252Cid% 252Cinitcwndbps% 252Cip% 252Cipbits% 252Citag% 252Clmt% 252Cmime% 252Cmm% 252Cmn% 252Cms% 252Cmv% 252Cpcm2cms% 252Cpl% 252Cratebypass% 252Crequiressl% 252Csource% 252Cupn% 252Cexpire% 26mv% 3DM% 26ip% 3D182.68.203.45% 26id% 3Не-AMB0Fggb71vKhXSdQqcOPdLeb9v0n2GaibsWg_W5L5b7% 26мм% 3D31% 26 млн% 3Dsn-ci5gup-qxaz% 26upn% 3Dfri9F8GP9uA% 26source% 3Dyoutube% 26itag% 3D43% 26pl% 3D20% 26lmt% 3D1445550849945309% 26expire% 3D1467922869% 26sver% 3D3% 26ipbits% 3D0% 26dur% 3D0.000, тип = видео% 2Fmp4% 3B + кодеки% 3D% 22avc1.42001E% 2C + mp4a.40.2% 22

Пожалуйста, помогите и предложите, как я могу это сделать, используя QT, C++, обычные выражения. Я не хочу использовать какой-либо другой язык программирования. Спасибо & С уважением.

ответ

0

Класс QString для работы со строками в Qt. Вы должны изучить QString разделы документации: Manipulating String Data и Querying String Data. Возможно, contains() метод QString достаточно для решения вашей проблемы.

UPD:

Простой пример с подстроки манипулирования:

#include <QCoreApplication> 
#include <QDebug> 

int main(int argc, char *argv[]) 
{ 
    QCoreApplication a(argc, argv); 

    QString bigString = "BigString BigString SubString BigString"; 
    QString subString = "SubString"; 

    bool containsFlag = bigString.contains(subString, Qt::CaseSensitive); 
    int index = bigString.indexOf(subString, 0, Qt::CaseSensitive); 

    qDebug() << "Length of subString: " << subString.length(); 
    qDebug() << "SubString contains in bigString: " << containsFlag; 
    qDebug() << "SubString index in bigString: " << index; 

    return a.exec(); 
} 

Как вы можете видеть, вы можете определить, если subString содержит в bigString. Конечно, вы можете определить индекс subString в bigString. Вы можете внести свои данные в bigString и subString.

+0

Привет, Кирилл. Можете ли вы, пожалуйста, помогите мне с этим чуть ли не по этой проблеме. Фактически большая часть этой строки является переменной. Я уверен только в начале и начале подстроки. – Noddy

+0

Я обновляю ответ с небольшим примером. –

Смежные вопросы