Ответ 1
Ну, вы просто возьмете второй элемент:
QStringList pieces = url.split( "/" );
QString neededWord = pieces.value( pieces.length() - 2 );
В качестве альтернативы вы можете использовать регулярное выражение.
У меня есть эти строки URL
Файл:///home/we/Pictures/neededWord/3193_n.jpg
Файл:///home/smes/Pictures/neededWord/jds_22.png
Файл:///home/seede/kkske/Pictures/neededWord/3193_n.jpg
Я хочу извлечь "needWord" из каждого из них. Как видно из них, имя изображения всегда после "needWord" , а изменяющаяся часть в строке перед "needWord" . То, как я думал, состоит в том, чтобы разделить строку с помощью разделителя "/" справа и взять второй элемент в приведенном QstringList. Итак, как расколоться, или есть лучший способ сделать это?
Ну, вы просто возьмете второй элемент:
QStringList pieces = url.split( "/" );
QString neededWord = pieces.value( pieces.length() - 2 );
В качестве альтернативы вы можете использовать регулярное выражение.
Я исправил его следующим образом:
QStringList splitted = info.url().prettyUrl().split("/"); *header = splitted.at(splitted.findIndex(splitted.last()) - 1);
Или что-то вроде этого с головы (не проверено):
QString neededWord = "";
QString str = "file:///home/seede/kkske/Pictures/neededWord/3193_n.jpg";
QRegExp rx(".*Pictures\\/(\\w+)\\/.*(?:jpg|png|gif|bmp|tiff)");
rx.setMinimal(false);
rx.setCaseSensitivity(Qt::CaseSensitive) // or use Qt::CaseInsensitive
if (rx.indexIn(str) != -1) {
neededWord = rx.cap(1);
}
"requiredWord" должен быть в needWord QString. Шаблон Regexp может быть уточнен и написан более элегантным способом, но я ненавижу писать эти:), даже если они супер полезны!