2017-01-18 6 views
1

У меня есть QString «MyString», который захватывается из возвращаемого значения этой команды оболочки:QRegExp не работает, как ожидалось

df /storage/sdcard0/ 

Строка Захватывается:

Filesystem    Size  Used  Free Blksize 
    /storage/sdcard0/  5.5G  3.9G  1.6G 4096 

Я конвертировать QString к QStringList с:

QStringList list=mystring.split(QRegExp("\\s")); 
    int i = list.count(); 

Однако, когда я исследую список:

for(int a = 0; a < i; a = a + 1) 
      qDebug() << list[a]; 

"Filesystem" 
"" 
"Size" 
"" 
"Used" 
"" 
"Free" 
"" 
"Blksize" 
"" 
"/sdcard/" 
"" 
"5.5G" 
"" 
"3.9G" 
"" 
"1.6G" 
"" 
"4096" 
"" 
"" 

Я кратко опустил кучу «» для краткости. Если я использую тот же раскол с набранной строкой , она отлично работает.

 QString mystring = "This is a sentence with words" 

QDebug показывает:

"This" 
"is" 
"a" 
"sentence" 
"with" 
"words" 

Как я могу остановить их "" от добавления к QStringList? Может ли это быть исправлено с помощью другого QRegExp?

+0

К сожалению: список QStringList = mystring.split (QRegExp ("\\ S"), QString :: SkipEmptyParts); – drescherjm

+0

Работает, спасибо! Если вы добавите в качестве ответа, я приму его как решение. – Alan

ответ

0

В разделе QString::split(const QRegExp &rx, SplitBehavior behavior = KeepEmptyParts) const имеется необязательный параметр SplitBehavior, который позволяет указать, как обрабатывать пустые части. Если вы оставите по умолчанию, то QString :: split() будет содержать пустые части. Чтобы пропустить, вам необходимо установить это значение QString::SkipEmptyParts.

Так изменить разделение на следующее:

QStringList list=mystring.split(QRegExp("\\s"),QString::SkipEmptyParts); 

 Смежные вопросы

  • Нет связанных вопросов^_^