【问题标题】:Filter program parameters with QRegExp使用 QRegExp 过滤程序参数
【发布时间】:2013-01-17 18:32:29
【问题描述】:

我想用 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 不是执行的程序 - 它只是一个字符串。

【问题讨论】:

  • 论据从何而来?在可能的情况下,我总是尝试将它们作为 QStringList 处理。
  • 我从 freedesktop.org 桌面条目中阅读它们

标签: c++ regex qt path qregexp


【解决方案1】:

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

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

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-05
    • 2013-03-29
    • 1970-01-01
    • 1970-01-01
    • 2019-07-31
    • 2015-10-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多