我正在处理 C++ 中的一个问题,这是我的问题:我从一个对象中获取一个字符串,我想检测是否有一个字符不是字母数字或特殊字符,如,/
等。除了问,我想不出别的办法(
$
if (Text.Pos("A") > 0)
if (Text.Pos("B") > 0)
.....
有没有标准的方法/方法可以更快地做到这一点?
我正在处理 C++ 中的一个问题,这是我的问题:我从一个对象中获取一个字符串,我想检测是否有一个字符不是字母数字或特殊字符,如,/
等。除了问,我想不出别的办法(
$
if (Text.Pos("A") > 0)
if (Text.Pos("B") > 0)
.....
有没有标准的方法/方法可以更快地做到这一点?
我假设您提出的解决方案是检查所有字母数字字符是否都在字符串内。此方法不起作用,因为您还必须考虑字符串的长度,因为可以获得包含所有字母数字字符和一个特殊字符的字符串。
没有嵌套数千个 if 语句来检测非字母数字字符,这是一个有效的解决方案:
(我假设Text
可以使用基于范围的 for 循环进行迭代)
您可以使用std::find_if
#include <algorithm>
#include <iterator>
#include <cctype>
#include <iostream>
auto it = std::find_if(std::begin(Text), std::end(Text), [](const char c) {
return std::isalnum(c) == 0; // Not alphanumeric
});
if (it == std::end(Text)) {
std::cout << "Text is fine!";
} else {
std::cout << "Text contains non-alphanumeric character: '" << *it << "'";
}
std::cout << std::endl;