思路
通过正则表达式可以很简单的实现统计中文 英文 特殊字符的个数
代码
#include <QCoreApplication>
#include <QRegExp>
#include <QDebug>
int GetHanNumFromString(QString str) //获取汉字个数
{
int count = 0;
QRegExp regex = QRegExp(QString("^[\u4E00-\u9FA5]{0,}$"));
for(int i = 0; i < str.length(); i++)
{
if(regex.exactMatch(QString(str[i])))
count++;
}
return count;
}
int getCharNumberFromString(QString str)
{
int count = 0;
QRegExp regex = QRegExp(QString("^[A-Za-z]+$"));
for(int i = 0; i < str.length(); i++)
{
if(regex.exactMatch(QString(str[i])))
count++;
}
return count;
}
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QString str = QStringLiteral("见到你我很高兴啊jack");
qDebug() << GetHanNumFromString(str);
QString str1 = QStringLiteral("我不高兴了libai1234.*_");
qDebug() << getCharNumberFromString(str1);
return a.exec();
}
结束
C++11
也是支持正则表达式的。如果你想统计大小写字母加数字的个数[A-Za-z0-9]
。如果你想统计大小写字母加数字加特殊字符*
号的个数[A-Za-z0-9\*]
。可见使用正则表达式很好扩展适用于多种场景。
参考文章: QString汉字个数检测
正则表达式菜鸟教程 底部含有常见的正则表达式