QStringList удаляет пробелы из строк - PullRequest
5 голосов
/ 21 июля 2011

Какой лучший способ обрезки всех строк в списке строк? Я пытаюсь использовать replaceInStrings:

QStringList somelist;
// ... //
// add some strings
// ... //
somelist.replaceInStrings(QRegExp("^\s*"),"");

но пробелы не удалены.

Ответы [ 5 ]

7 голосов
/ 21 июля 2011
QRegExp("^\s*")

\ является специальным символом, поэтому вы должны использовать \\, когда вам нужно вставить косую черту в строку

QRegExp("^\\s*")
5 голосов
/ 21 июля 2011

Как уже сказал другой ответ, вам нужно избежать обратной косой черты.Вы также хотите изменить выражение, чтобы оно соответствовало одному или нескольким пробелам, а не 0 или нескольким пробелам, попробуйте использовать: QRegExp ("^ \\ s +")

0 голосов
/ 20 апреля 2018

Обрезка означает удаление пробелов впереди и в конце строки. Пока все решения удаляют только пробелы впереди.

Вот реальное решение для обрезки:

str_list.replaceInStrings(QRegExp("^\\s+|\\s+$"), "");
0 голосов
/ 15 марта 2017

Если вы можете использовать C ++ 11 (файл проекта qt5 qmake: CONFIG += c++11), попробуйте этот короткий фрагмент:

QStringList somelist;
// fill list
for(auto& str : somelist)
    str = str.trimmed();

Он будет проходить по списку сссылка и результат вызова функции trimmed будут возвращены элементу в исходном списке.

Без использования C ++ 11 вы можете использовать Qt методы сИзменяемые итераторы в стиле Java:

QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
    it.next();
    it.value() = it.value().trimmed();
}

Последний метод просто идеален, если, например, вы хотите удалить пустые строки после их обрезки:

QMutableListIterator<QString> it(somelist);
while (it.hasNext()) {
    it.next();
    it.value() = it.value().trimmed();
    if (it.value().length() == 0)
        it.remove(); 

}

Удаление допустимо, см. Документацию по итератору Qt в стиле Qt

0 голосов
/ 30 октября 2016
QStringList somelist;

for(int i = 0; i < somelist.size(); ++i) {
    QString item = static_cast<QString>(somelist[i]).trimmed()
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...