Qt实现数字和字母混合的字符串自增
有时候想要一串字母和数字混合的字符串能够以1或者n的增量不断增加,下面代码可以实现此功能,如果有bug,欢迎指正:
#define isNum(str) QRegExp(QString("[0-9]{%1}" ).arg(str.size())).exactMatch(str)
#define isLower(str) QRegExp(QString("[a-z]{%1}" ).arg(str.size())).exactMatch(str)
#define isUpper(str) QRegExp(QString("[A-Z]{%1}" ).arg(str.size())).exactMatch(str)
#define isNumAndLower(str) QRegExp(QString("[0-9a-z]{%1}").arg(str.size())).exactMatch(str)
#define isNumAndUpper(str) QRegExp(QString("[0-9A-Z]{%1}").arg(str.size())).exactMatch(str)
#define isLowerAndUpper(str) QRegExp(QString("[A-Za-z]{%1}").arg(str.size())).exactMatch(str)
#define isNumAndLowerAndUpper(str) QRegExp(QString("[0-9A-Za-z]{%1}").arg(str.size())).exactMatch(str)
enum IncreasingSymbol {
NoSymbol = 0,
Number = 1,
LowerChar = 2,
UpperChar = 3,
NumAndLowerChar = 4,
NumAndUpperChar = 5,
LowerAndUpperChar = 6,
NumAndLowAndUpChar = 7,
};
QString increment(QString sBegin, QString sEnd, QString sRange, int iIncrease, int iType) {
if (sBegin.isEmpty() || sEnd.isEmpty() || sRange.isEmpty()) return "";
if (sBegin >= sEnd) return sEnd;
char beginNum, beginLower, beginUpper, endNum, endLower, endUpper;
findBeginAndEndChar(sRange, beginNum, beginLower, beginUpper, endNum, endLower, endUpper);
int iSize = sBegin.size();
while (iSize > 0) {
char last = sBegin[iSize - 1].toLatin1();
last += ((iSize == sBegin.size()) ? iIncrease : 1);
switch (iType) {
case Number: {
while(last >= beginNum && last < endNum && !sRange.contains(last)) {
last++;
}