1

我想过滤一个像 QRegExp 这样的命令

/path/to/executable --long-parameter -s /path/which/has/a/space/and/a/dash/\ -end

我尝试删除所有以-和程序名称开头的参数(/path/to/executable

QString str(...);
str.remove(QRegExp("^\\S*")).remove(QRegExp("\\s-\\S*")).trimmed(); 

这会删除参数,但如果有/a/dash/\ -end,这将被视为参数,当它应该离开时,因为空格前面有一个反斜杠。有什么办法可以处理吗?

/path/to/executable 不是执行的程序 - 它只是一个字符串。

4

1 回答 1

2

为什么不将它们作为QStringList处理?

您可以使用QString::split(...)方法将其拆分为标记(字符串,空格分隔),然后将其拆分为

  • 检查每个字符串的第一个字符是否是破折号(或任何其他检查)并将其删除(或执行任何您想要的操作)。

  • 删除第一个字符串(即您显示的可执行文件的路径)

于 2013-02-02T15:32:25.100 回答