How to split a string until nth space?
-
Hi,
I have following string:QString str = "DRIVER_STAT.LEG1_LO_ERR 00000004 00000000 00000001 00000000 RO LEG1 Driver Low Error";
There are spaces and tabs between words and there are always 7 fields. I want to save them to a QStrginList but not affecting the last sentence, i. e. the desctiption "LEG1 Driver Low Error" must be one string. It shoult look like this:
["DRIVER_STAT.LEG1_LO_ERR"], ["00000004"], ["00000000"], ["00000001"], ["00000000"], ["RO"], ["LEG1 Driver Low Error"]
How can I do that? What is the correct Regex for that?
Thanks. -
Hi
Are any of the fields fixed size?Also ["LEG1 Driver Low Error"]
Can contain both space and/or tabs?
So we do not know what separator is used - it can be mixed?
-
Hi,
Thanks for reply.
To explain more clearly, the seperator is normaly tab character except the first word:"DRIVER_STAT.LEG1_LO_ERR(\s+)00000004(\t+)00000000(\t+)00000001(\t+)00000000(\t+)RO(\t+)LEG1(\s+)Driver(\s+)Low(\s+)Error"
-
@kahlenberg said in How to split a string until nth space?:
"DRIVER_STAT.LEG1_LO_ERR(\s+)00000004(\t+)00000000(\t+)00000001(\t+)00000000(\t+)RO(\t+)LEG1(\s+)Driver(\s+)Low(\s+)Error"
Means, that the after the first group the separators could be any number of whitespace characters or blanks only? As far as I remember
\s
matches any whitespace char- A space character
- A tab character
- A carriage return character
- A new line character
- A vertical tab character
- A form feed character
-
Sory, I meant only one or more space character with \s+ and only one or more tab character with \t+. There are no \r, \n characters, There are only spaces or tabs.
-
Wow!
Thank you very much. It works! -
You could als try with a RegularExpression like this:
str = str.replace(QRegularExpression("[ ]+(.*$)"),"\t\\1").replace(QRegularExpression("[ ]+")," ") QStringList list = str.split(QRegularExpression("\t+"));
This will also remove multiple spaces in the last text block