Qt - 使用几种类型的空格作为分隔符来拆分QString

时间:2016-04-16 17:46:44

标签: c++ regex qt split qstring

我正在寻找拆分QString。 QString中有几个单词,由以下符号中的一个或多个(!)分隔:

  • 空白
  • 标签
  • CR
  • LF

我只想提取单词。基本上,我正在尝试复制Python str.split()函数的行为。

我知道我可以使用正则表达式来实现这一目标,但它会是什么样子?任何其他直接实现这一目标的方法也是受欢迎的。

1 个答案:

答案 0 :(得分:7)

请注意,CR,LF和标签 已经是空格。如果您需要匹配空白,则可以依赖shorthand character class \s

  

\s匹配空白字符(QChar::isSpace())。

所以,请使用

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

如果您打算拆分包含特定字符的字符串,请使用character class

  

[...]字符集可以用方括号表示,类似于完整的正则表达式。在字符类中,像外部一样,反斜杠没有特殊含义。

然后,尝试

QStringList list = str.split(QRegExp("[\r\n\t ]+"), QString::SkipEmptyParts);

您可以在需求更改后稍后放大列表。