如何检查字符串中的特殊字符
How to check a String for special characters?
我正在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;
相关文章:
- 如何用转义符替换字符串中的所有特殊字符
- 反转字符串中单词的位置,而不更改 O(1) 空格限制中特殊字符的顺序
- 如何检查字符串是否包含所有这些:数字、字母和特殊字符
- 转义std::字符串中的特殊字符
- 使用具有特殊字符的正则表达式标记 C++ 字符串
- 如何输入以特殊字符开头的字符串
- 如何使用正则表达式匹配不包含特殊字符(&、\、<、>、|、)的字符串,除非它们以反斜杠开头
- 将mysqlx :: value转换为带有特殊字符的std ::字符串
- 如何检查字符串中的特殊字符
- 带有特殊字符的字符串的控制台输出
- 使用迭代器从字符串中删除特殊字符
- C 中的特殊字符的子字符串(STD :: substr)
- 如何使用嵌套的getline()函数来获取字符串中的特殊字符和标点符号
- C++:比较字符串或包含特殊字符(á、é、ő 等)的字符串或 wstring )
- 字符串到字符*的特殊字符转换
- python字符串使用特殊字符发送到c++dll,崩溃
- 字符串本地化缺少一些特殊字符
- C++ 标识字符串中的特殊字符
- 反转字符串中的每个字符,特殊字符除外(例如 "?" )
- 在VC ++浮点数据类型值中,如何检查字符串或特殊字符是否混合