Вопрос:
Как удалить /Job из /home/admin/job0/Job
QString name = «/home/admin/job0/Job»
Я хочу удалить последнюю строку после “/”
Лучший ответ:
Найти последний слэш с помощью QString :: lastIndexOf. После этого получим подстроку с QString :: left до позиции последнего появления косой черты
QString name = «/home/admin/job0/Job»; int pos = name.lastIndexOf(QChar(‘/’)); qDebug() << name.left(pos);
Это напечатает:
«/home/admin/job0»
Вы должны проверить int pos для -1, чтобы убедиться, что косая черта найдена вообще.
Чтобы включить последний косой черты в выводе, добавьте +1 в установленное положение
qDebug() << name.left(pos+1);
Вывод:
«/home/admin/job0/» Ответ №1
У вас есть QString :: chop() для случая, когда вы уже знаете, сколько символов нужно удалить.
Это то же самое, что и QString::remove(), просто работает с обратной стороны строки.
Ответ №2
Может быть, проще всего понять для более поздних читателей, вероятно, будет:
QString s(«/home/admin/job0/Job»); s.truncate(s.lastIndexOf(QChar(‘/’)); qDebug() << s;
так как буквенный код говорит, что вы намеревались.
Ответ №3
Вы можете сделать что-то вроде этого:
QString s(«/home/admin/job0/Job»); s.remove(QRegularExpression(«\/(?:.(?!\/))+$»)); // s is «/home/admin/job0» now