【发布时间】: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,具体取决于您需要实现的目标....) -
您能否描述一个不满足该模式的字符串,因为我认为我做不到。您的规范似乎只是在说不是逗号分隔的字符。从字面上看,任何字符串都匹配该模式。您要检查的内容与您的描述几乎没有关系。所以我认为你需要更精确地了解哪些字符串匹配,哪些不匹配。