如何检查字符串中的特殊字符?

时间:2019-01-17 06:50:07

标签: c++ alphanumeric ansistring

我正在处理C ++中的问题,这是我的问题: 我从一个对象中得到一个字符串,我想检测是否存在不是字母数字字符或特殊字符,例如/($等。除了问

,我无法想象
if (Text.Pos("A") > 0)

if (Text.Pos("B") > 0)

.....

是否有标准的方法/方法可以更快地做到这一点?

1 个答案:

答案 0 :(得分:0)

我假设您提出的解决方案是检查所有字母数字字符是否都在字符串中。此方法不起作用,因为您还必须考虑字符串的长度,因为有可能获得包含所有字母数字字符和一个特殊字符的字符串。

通过嵌套数千个if语句来检测非字母数字字符,这是一种可行的解决方案:

(我假设Text can be iterated over使用基于范围的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;