web-dev-qa-db-fra.com

QChaîne supprime les derniers caractères

Comment supprimer/Job de/home/admin/job0/Job

QString name = "/home/admin/job0/Job"

Je veux enlever la dernière chaîne après "/"

5
Sijith

Recherchez la dernière barre oblique avec QString :: lastIndexOf . Après cela, obtenez la sous-chaîne avec QString :: left jusqu'à la position de la dernière occurrence de slash

QString name = "/home/admin/job0/Job";
int pos = name.lastIndexOf(QChar('/'));
qDebug() << name.left(pos);

Cela va imprimer: 

"/home/admin/job0"

Vous devez vérifier int pos pour -1 pour vous assurer que la barre oblique a été trouvée. 

Pour inclure la dernière barre oblique dans la sortie, ajoutez +1 à la position trouvée

qDebug() << name.left(pos+1);

Est-ce que la sortie:

"/home/admin/job0/"
7
Xplatforms

Vous avez QString :: chop () pour le cas où vous connaissez déjà le nombre de caractères à supprimer.
Il est identique à QString::remove(), fonctionne simplement à l’arrière de la chaîne.

7
mekkanizer

Peut-être le plus facile à comprendre pour les lecteurs ultérieurs serait probablement:

QString s("/home/admin/job0/Job");
s.truncate(s.lastIndexOf(QChar('/'));
qDebug() << s;

comme le code dit littéralement ce que vous vouliez.

2
transistor

Vous pouvez faire quelque chose comme ça:

QString s("/home/admin/job0/Job");
s.remove(QRegularExpression("\\/(?:.(?!\\/))+$"));
// s is "/home/admin/job0" now
1
vahancho