Как да получите първата дума на от 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 Изглежда така. Добро хващане. - 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