Я написал исходный код, как:Как указать метод QString :: indexOf?
int main(int argc, char *argv[]) {
QString x = "start some text here end";
QString s = "start";
QString e = "end";
int start = x.indexOf(s, 0, Qt::CaseInsensitive);
int end = x.indexOf(e, Qt::CaseInsensitive);
if(start != -1){ // we found it
QString y = x.mid(start + s.length(), ((end - (start + s.length())) > -1 ? (end - (start + s.length())) : -1)); // if you dont wanna pass in a number less than -1
or
QString y = x.mid(start + s.length(), (end - (start + s.length()))); // should not be any issues passing in a number less than -1, still works
qDebug() << y << (start + s.length()) << (end - (start + s.length()));
}
}
Проблема заключается в том, что в моем текстовом файле слово «конец» встречается очень часто. Итак, есть ли способ создать метод indexOf, который просто ищет FIRST «QString e =» end », который появляется после« QString s = «start» »? привет
Честно говоря, у меня уже была такая же идея: D - просто использовал «start + s.length()» вместо «start». Это также помогло, но оно не решило проблему, потому что по-прежнему существует множество «концов» после появления «начала» QString. – Streight
Но разве вам не нужно первое вхождение слова «конец» после слова «начало»? Если вы хотите сделать еще одну вещь, достаточно просто понять, можем ли мы помочь :) – unbekant
Невозможно выполнить эту работу с Qt Api. Поэтому я предлагаю вам использовать цикл для этой работы, например, найти второй ** start **, а затем найти второй ** конец ** после этого. Если ваш текст более сложный, чем этот случай, вы должны использовать лексер (ручной текст, инструменты). – softghost