Разделение QString

У меня есть эти строки 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. Итак, как расколоться, или есть лучший способ сделать это?

Ответы

Ответ 1

Ну, вы просто возьмете второй элемент:

QStringList pieces = url.split( "/" );
QString neededWord = pieces.value( pieces.length() - 2 );

В качестве альтернативы вы можете использовать регулярное выражение.

Ответ 2

Я исправил его следующим образом:

QStringList splitted = info.url().prettyUrl().split("/");
*header   = splitted.at(splitted.findIndex(splitted.last()) - 1);

Ответ 3

Или что-то вроде этого с головы (не проверено):

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 может быть уточнен и написан более элегантным способом, но я ненавижу писать эти:), даже если они супер полезны!