【www.gdgbn.com--安卓教程】
#ifndef __ct3d__checkvalidval__h__
#define __ct3d__checkvalidval__h__class cstringex
{
private:
cstring m_str;
int m_dot_count;
public:
cstringex()
{
m_dot_count = 0;
}
cstringex(const cstring& s)
{
m_str = s;
}
virtual ~cstringex()
{
}public:
bool isfloat()
{
if (m_str.isempty())
return false;m_dot_count = 0;
int start_pos = 0;
char c = m_str.getat(0);
if (c=="+" || c=="-")
start_pos = 1;int length = m_str.getlength();
for (int i=start_pos; i{
c = m_str.getat(i);
if (c==".")
{
m_dot_count++;
continue;
}if (c<0x30 || c>0x39)
return false;
}if (m_dot_count>1) // ..23.
return false;
if (length==1 && (start_pos==1 || m_dot_count==1))// . or +
return false;
if (length==2 && start_pos==1 && m_dot_count==1) // +.
return false;return true;
}bool isinterger()
{
if (m_str.isempty())
return false;int start_pos = 0;
char c = m_str.getat(0);
if (c=="+" || c=="-")
start_pos = 1;int length = m_str.getlength();
for (int i=start_pos; i{
c = m_str.getat(i);
if (c<0x30 || c>0x39)
return false;
}if (length==1 && start_pos==1)// +
return false;return true;
}bool isvalidfloat(double minval, double maxval, bool ishasmin=true, bool ishasmax=true)
{
if (maxval{
double a = minval;
minval = maxval;
maxval = a;
}if (!isfloat())
return false;double d = atof(lpctstr(m_str));
if (ishasmin && dreturn false;
if (ishasmax && d>maxval)
return false;return true;
}bool isvalidinterger(int minval, int maxval, bool ishasmin=true, bool ishasmax=true)
{
if (maxval{
int a = minval;
minval = maxval;
maxval = a;
}if (!isinterger())
return false;int d = atoi(lpctstr(m_str));
if (ishasmin && dreturn false;
if (ishasmax && d>maxval)
return false;return true;
}
};// 全局函数
class cstringvalid
{
public:
// 字符串有效判断
static bool cstringvalid::strisfloat(const cstring& s)
{
cstringex sx = s;
return sx.isfloat();
}static bool cstringvalid::strisnum(const cstring& s)
{
cstringex sx = s;
return sx.isinterger();
}static bool cstringvalid::strisfloatvalid(const cstring& s, double minval, double maxval, bool ishasmin=true, bool ishasmax=true)
{
cstringex sx = s;
return sx.isvalidfloat(minval, maxval, ishasmin, ishasmax);
}static bool cstringvalid::strisintergervalid(const cstring& s, int minval, int maxval, bool ishasmin=true, bool ishasmax=true)
{
cstringex sx = s;
return sx.isvalidinterger(minval, maxval, ishasmin, ishasmax);
}
};
#endif