如何在不手动将值的最后一个字符与每个字母进行比较的情况下检查该字符是否为任何字母?
if(value.endsWith("A",Qt::CaseInsensitive)==true)
...
到目前为止,这是我的代码,Value必须以Y/X/Z开头,并且有9个字符
void Extranjero::setNIE(const QString &value)
{
if(value.startsWith("Y",Qt::CaseInsensitive)==true && value.length()==9)
{
NIE = value;
}
else if(value.startsWith("X",Qt::CaseInsensitive)==true && value.length()==9)
{
NIE = value;
}
else if(value.startsWith("Z",Qt::CaseInsensitive)==true && value.length()==9)
{
NIE = value;
}
else NIE = "Problemon";
}
您可以使用back()
和begin()
成员函数。
if(value.length() == 9){
QChar tmpChar = value.back();
if( tmpChar == 'Z' || tmpChar == 'Y' || tmpChar == 'Z'){
// code..
}
}
如果您希望字符串以任何字母字符结尾,那么您可以轻松地使用isalpha
。但是,在另一种情况下,当您希望它以特定字符(如"X"、"Y"或"Z"(开头时,则需要手动指定它们。为了将代码推广到后一种情况,我建议在一个集合中插入特定的字符,并检查该集合是否包含给定字符串的第一个字符。我希望这能帮助你解决问题。