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

How to check a String for special characters?

本文关键字:字符串 特殊字符 检查 何检查      更新时间:2023-10-16

我正在C++中解决一个问题,这是我的问题:我从一个对象中获取一个字符串,我想检测是否有一个字符不是字母数字或特殊字符,如/($等。除了问之外,我无法想象还有什么办法

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

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

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

除了嵌套数千个 if 语句来检测非字母数字字符之外,这是一个有效的解决方案:

(我假设可以使用基于范围的 for 循环迭代Text

您可以使用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;