【问题标题】:String comparison in QT C++QT C++ 中的字符串比较
【发布时间】:2022-11-28 01:05:52
【问题描述】:

用户在 lineEdit 中写入一行,我应该检查这一行是否包含以下结构:

“逗号以外的任何字符”,“逗号以外的任何字符”

等等,例如:

qwe, asd, qwe, ertqsd

我通过使用许多支票来做到这一点,但我想通过一张支票进行比较。

这是我的代码,它会检查“,”和“”的许多错误位置

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.contains(", ,", Qt::CaseInsensitive);

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.contains(" ,", Qt::CaseInsensitive);

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.contains("  ", Qt::CaseInsensitive);

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.endsWith(",");

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.endsWith(" ");

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.startsWith(",");

if(!checkSkillsComma)
    checkSkillsComma=tableSkills.startsWith(" ");

【问题讨论】:

  • 抱歉,请重写您的问题。绝对不清楚您要实现的目标。还显示您想要减少到一张支票的代码。
  • std::any_of(qstring.begin(), qstring.end(), [](QChar c) { return c != ','; })??? (或使用QRegularExpression,具体取决于您需要实现的目标....)
  • 您能否描述一个不满足该模式的字符串,因为我认为我做不到。您的规范似乎只是在说不是逗号分隔的字符。从字面上看,任何字符串都匹配该模式。您要检查的内容与您的描述几乎没有关系。所以我认为你需要更精确地了解哪些字符串匹配,哪些不匹配。

标签: c++ qt


【解决方案1】:

如果我正确理解问题,最好使用 QRegularExpression。一些技巧是使用 QString::split(",")。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-19
    • 2016-02-08
    • 2013-11-22
    相关资源
    最近更新 更多