做项目的时候需要对字符串做下校验,一些常见的相互转换、文件夹的一些操作等,以下是一些总结内容。
1、是否是纯英文
bool IsEnglish(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
while(*s)
{
if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z'))
{
}
else
{
bret = false;
break;
}
s++;
}
return bret;
}
2、是否是纯数字
bool IsNumber(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
while(*s)
{
if(*s>='0' && *s<='9')
{
}
else
{
bret = false;
break;
}
s++;
}
return bret;
}
3、是否是纯数字和.
bool IsNumber(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
while(*s)
{
if(*s<'0' || *s>'9')
{
if(*s!='.')
{
bret = false;
break;
}
}
s++;
}
return bret;
}
4、是否是纯数字和如果有.仅有一个
bool IsNumber(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
int iPoint=0;
while(*s)
{
if(*s<'0' || *s>'9')
{
if(*s!='.')
{
bret = false;
break;
}
else
{
iPoint++;
if(iPoint>=2)
{
bret = false;
break;
}
}
}
s++;
}
return bret;
}
5、是否是纯中文
bool IsChinese(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
while(*s)
{
if((*s>= 0x4E00) && (*s<= 0x9FA5))
{
}
else
{
bret = false;
break;
}
s++;
}
return bret;
}
6、是否是英文或数字
bool IsEnglishOrNumber(QString qstrSrc)
{
QByteArray ba = qstrSrc.toLatin1();
const char *s = ba.data();
bool bret = true;
while(*s)
{
if((*s>='A' && *s<='Z') || (*s>='a' && *s<='z') || (*s>='0' && *s<='9'))
{
}
else
{
bret = false;
break;
}
s++;
}
return bret;
}
7、是否是中文或数字
bool IsChineseOrNumber(QString qstrSrc)
{
int nCount = qstrSrc.count();
bool bret = true;
for(int i=0; i<nCount; ++i)
{
QChar cha = qstrSrc.at(i);
ushort uni = cha.unicode();
if((uni >= 0x4E00 && uni <= 0x9FA5) || (uni >= '0' && uni <= '9'))
{
}
else
{
bret = false;
break;
}
}
return bret;
}
8、string2Qstring, Qstring2string,tring2bool,string2int,string2double,string2float
QString string2Qstring(std::string str)
{
QString qstr = QString::fromStdString(str);
return qstr;
}
std::string Qstring2string(QString str)
{
QByteArray cdata = str.toLocal8Bit();
std::string cstr = std::string(cdata);
return cstr;
}
bool string2bool(std::string str)
{
if ( str.empty())
{
return false;
}
else
{
return true;
}
}
int string2int(std::string str)
{
if (str.length()==0)
{
return -1;
}
else
{
return std::stoi(str); //系统提供数字转字符
}
}
double string2double(std::string str)
{
if (str.length()==0)
{
return -1;
}
else
{
return std::stod(str); //系统提供数字转字符
}
}
float string2float(std::string str)
{
if (str.length()==0)
{
return -1;
}
else
{
return std::stof(str); //系统提供数字转字符
}
}
9、文件及文件夹的创建、增删改查等
//查找的是文件,不是文件夹
QStringList FindFile(std::string str)
{
QString path=string2Qstring(str);
// 获取所有文件夹名
QDir dir(path);
//path = dir.fromNativeSeparators(path);// "\\"转为"/"
QStringList allFile = QStringList("");
dir.setFilter(QDir::Files);
dir.setSorting(QDir::Name);
allFile = dir.entryList();
return allFile;
}
QStringList FindFolder(std::string str,std::string inFolderName)
{
QString folder=string2Qstring(str);
QString Name=string2Qstring(inFolderName);
QStringList result;
// 获取所有文件夹名
QDir dir(folder);
folder = dir.fromNativeSeparators(folder);// "\\"转为"/"
QStringList allFolder = QStringList("");
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name);
allFolder = dir.entryList();
result = allFolder.filter(Name);
return result;
}
QStringList IterateFolder(std::string str)
{
QString folder=string2Qstring(str);
// 获取所有文件夹名
QDir dir(folder);
folder = dir.fromNativeSeparators(folder);// "\\"转为"/"
QStringList allFolder = QStringList("");
dir.setFilter(QDir::Dirs | QDir::NoDotAndDotDot);
dir.setSorting(QDir::Name);
allFolder = dir.entryList();
return allFolder;
}
//************************************
// 方法名称: CreateFolder
// 概要: 创建文件夹
// 返回值: bool
// 参数: QString folderPath 文件夹路径
//************************************
bool CreateFolder(std::string str)
{
QString folderPath= string2Qstring(str);
//创建文件夹
QDir dir(folderPath);
bool b=false;
if (!dir.exists())
{
b= dir.mkpath(folderPath);
}
return true;
}
void OpenFile(std::string inINIPath,std::string inININame)
{//,QTextStream outFile
QString QinINIPath=string2Qstring(inINIPath);
QString QinININame=string2Qstring(inININame);
QString QPath=QinINIPath+"\\"+QinININame;
//初始化时加载文件路径
QFile file(QPath);
//以读写的方式打开文件,成功返回true,失败返回false
//想用其他方式打开文件,请看上面的文件打开模式
//先打开文件
file.open(QIODevice::ReadWrite|QIODevice::ReadOnly|QIODevice::Text);
//如果文件不存在,则创建并打开该文件
//使用QTextStream一行一行读取文件
QTextStream in(&file);
// outFile=∈
/*
while (!in.atEnd())
{
QString line = in.readLine(); //整行读取
qDebug() << line;
}
*/
return;
}
bool CreateFile(std::string inINIPath,std::string inININame)
{
//CreateFolder(inINIPath);
QString QinINIPath=string2Qstring(inINIPath);
QString QinININame=string2Qstring(inININame);
QSettings *configIniWrite=new QSettings(QinINIPath+"\\"+QinININame,QSettings::IniFormat);
configIniWrite->setIniCodec(QTextCodec::codecForName("GB2312"));//可读写ini文件中的中文
//向ini文件中写入内容,setValue函数的两个参数对应键值,节:canshu;键:biaoti;值:激光检测
configIniWrite->setValue("/canshu/biaoti","123 ");
configIniWrite->setValue("/canshu/danwei","ABC ");
configIniWrite->setValue("/shezhi/zhuangtai","正在扫描 ");
delete configIniWrite;
return true;
}
//************************************
// 方法名称: RemoveFolder
// 概要: 移除文件夹
// 返回值: bool
// 参数: QString dirPath 文件夹路径
//************************************
bool RemoveFolder(std::string str)
{
QString dirPath=string2Qstring(str);
//移除文件夹
QDir dirItem(dirPath);
dirItem.removeRecursively();
return true;
}
bool RemoveFile(std::string inINIPath,std::string inININame)
{
QString QinINIPath=string2Qstring(inINIPath);
QString QinININame=string2Qstring(inININame);
//删除成功返回true,失败返回false
return QFile::remove(QinINIPath+"\\"+QinININame);
}