web-dev-qa-db-ja.com

QStringは最後の文字を削除します

/ home/admin/job0/Jobから/ Jobを削除する方法

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

「/」の後の最後の文字列を削除したい

6
Sijith

QString :: lastIndexOf で最後のスラッシュを見つけます。その後、最後のスラッシュの発生位置まで QString :: left で部分文字列を取得します

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

これは印刷されます:

"/home/admin/job0"

int posfor-1をチェックして、スラッシュがまったく見つかりました。

出力に最後のスラッシュを含めるには、+ 1を元の位置に追加します

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

出力されます:

"/home/admin/job0/"
7
Xplatforms

QString :: chop() は、削除する文字数がすでにわかっている場合に使用します。
これはQString::remove()と同じで、文字列の後ろから動作します。

10
mekkanizer

おそらく、後の読者にとって最も理解しやすいのは次のとおりでしょう。

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

コードが文字通りあなたが意図したことを言うように。

3
transistor

次のようなことができます:

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