Как получить первое слово из Qstring

Я хочу получить первое слово Qstring.

Например String1 = "Read from file1". Я хочу извлечь string2 = "Read". Я хочу извлечь подстроку на основе пробелов.

Если я встречаю первый пробел в моем string1, мне нужна эта часть от string1 до string2.


person mkreddy    schedule 06.02.2014    source источник
comment
Вы должны предоставить некоторый код, как вы пытаетесь решить свою проблему.   -  person Dmitry Sazonov    schedule 06.02.2014


Ответы (3)


Используйте функцию разделения QString следующим образом:

QString firstWord = string1.split(" ").at(0);

Если в строке нет пробелов, будет возвращена вся строка.

person Rud Limaverde    schedule 06.02.2014
comment
Вам лучше проверить, не пусто ли оно, прежде чем звонить по адресу (0) - person Frank Osterfeld; 06.02.2014
comment
В документах говорится, что если вхождения нет, split() возвращает одноэлементный список, содержащий саму строку. Таким образом, он всегда будет возвращать хотя бы один список элементов. - person Rud Limaverde; 06.02.2014
comment
Действительно, это происходит даже при разбиении нулевой строки. - person Frank Osterfeld; 07.02.2014

Используйте QString::split, если вы хотите использовать все части, или QString::section, если вы просто хотите получить первое слово.

Например, самый простой синтаксис:

QString str = "Do re mi";
QString firstWord = str.section(" ", 0, 0);
// firstWord = "Do"

Если вам нужно обрабатывать все виды странных пробелов, вы можете использовать версия регулярного выражения функций:

QString str = "\tDo    re\nmi"; // tabs and newlines and spaces, oh my!
QString firstWord = str.section(QRegExp("\\s+"), 0, 0, 
    QString::SectionSkipEmpty);
// firstWord = "Do"
person Alex P    schedule 06.02.2014
comment
Если конец не указан, включаются все поля от начала до конца строки, поэтому должно быть firstWord = str.section(" ", 0, 0);, верно? - person user1712200; 08.05.2019
comment
@user1712200 user1712200 Кажется, да. Хороший улов. - person Alex P; 08.05.2019

Я бы сделал:

QString s("Read from file1");
QString subStr = s.section(" ", 0, 0, QString::SectionSkipEmpty);

Это будет работать правильно и в случае таких строк:

"Читать из файла1"

person vahancho    schedule 06.02.2014