打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
CString 中的SpanIncluding 和SpanExcluding 用法
使用CString::SpanIncluding可以检验字符串的合法性,是否是我们要求的字符,比如全是数字构成的字符串,我们可以用下面的代码进行判断:
[cpp] view plaincopy
CString strTarget;
......
if ( strTarget == strTarget.SpanIncluding( _T("0123456789") ) )
{
// 字符串由数字构成,符合要求
}
或者[cpp] view plaincopy
CString strTarget;
......
CString strTemp = strTarget.SpanIncluding( _T("0123456789") )
if ( strTarget.GetLength() == strTemp.GetLength() )
{
// 字符串由数字构成,符合要求
}
那为什么能够实现这样的检验呢?对于CString::SpanIncluding,遍历目标字符串,如果发现某个字符不是参数字符集(比如_T("0123456789"))中的字符,则立即返回。对于上例,如果满足if条件,肯定能判断符合要求。        不过,目标字符串一般是用户输入的,考虑到用户在字符串的首部或尾部可能会加上空格,上面的代码可能会判断不通过。所以,在判断之前,应该先调用CString::Trim,将字符串的首尾空格去除掉,然后再判断。
如果对于可输入的Combox组合框,我们只允许输入数字或指定的文字,比如下拉列表中包含“分钟”的字符,选中某项后将分钟也放置到组合框的输入框中,只允许输入数字或者带“分钟”字样的字符。我们可以先将“分钟”字样过滤掉,考虑到用户可能会输入空格,调用CString::Trim将首尾空格去掉,然后在使用CString::SpanIncluding来判别。
对于非MFC工程怎么处理呢?跟踪CString::SpanIncluding的代码,底层调用其实就是C函数_tcsspn,使用如下的代码判断即可。
[cpp] view plaincopy
BOOL IsDataValid( LPCTSTR lpStrTarget )
{
int nLen = _tcslen( lpStrTarget );
if ( 0 == nLen )
{
return FALSE;
}
int nIndex = _tcsspn( lpStrTarget, _T("0123456789") );
return ( nLen == nIndex ) ? TRUE : FALSE;
}
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
CString类_自我救赎的空间
PHP
python 面试题-收集100+面试题笔试题
收款收据,轻松模拟
正则表达式30分钟入门教程
Excel函数学习10:REPLACE函数
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服