c++ - 使用“any_of”时如何检查字符串是否没有特定符号?
问题描述
我正在尝试检查一个字符串以查看它是否满足所有要求,其中一个要求是没有'*'
或'%'
。用于std::any_of
检查整个字符串并使其正常工作,isupper
但islower
无法弄清楚这两个字符。
到目前为止我所拥有的样本,第三个 if 语句是我所得到的。
if(std::any_of(nPass.cbegin(), nPass.cend(), ::isupper))
{
if(std::any_of(nPass.cbegin(), nPass.cend(), ::islower) )
{
if(std::any_of(nPass.cbegin(), nPass.cend(), ::!='*'))
{
return true; // returns true if all criteria is met
}
}
}
解决方案
第三次检查不需要使用算法 std::any_of 。你可以使用find_first_of
类的方法std::string
。
这是一个演示程序。
#include <iostream>
#include <iomanip>
#include <string>
#include <iterator>
#include <algorithm>
#include <cctype>
bool check( const std::string &s )
{
return std::any_of( std::begin( s ), std::end( s ), ::isupper ) &&
std::any_of( std::begin( s ), std::end( s ), ::islower ) &&
s.find_first_of( "*% " ) == std::string::npos;
}
int main()
{
std::cout << std::boolalpha << check( "A" ) << '\n';
std::cout << std::boolalpha << check( "a" ) << '\n';
std::cout << std::boolalpha << check( "Aa%" ) << '\n';
std::cout << std::boolalpha << check( "Aa*%" ) << '\n';
std::cout << std::boolalpha << check( "Aa" ) << '\n';
return 0;
}
它的输出是
false
false
false
false
true
我想字符串必须同时包含大写和小写字母。如果您只检查字母字符,那么您可以使用::isalpha
.
推荐阅读
- gatsby - Gatsby 包含无效的 WIN32 路径字符
- c# - 用递归找到最便宜的路
- javascript - 如何在输入验证中再写一个条件?
- typescript - 如何指定 `SagaIterator` 效果返回类型
- bamboo - Bamboo:如何运行 xunit 测试(脚本任务),然后将其提供给“xunit 解析器”
- ios - 如何在 Swift 中构建 React Native 包?
- node.js - 如果文件不存在,child_process nodejs 不会触发错误
- python - 如何写附件数据?
- file - Linux - client_body_in_file_only - 如何为临时文件设置文件权限?
- node.js - 我无法获得新的连接