【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 && d    return 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 && d    return 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

本文来源:http://www.gdgbn.com/shoujikaifa/28811/