regex 查找字符串中第一个字母的位置[关闭]

bqf10yzr  于 2023-05-08  发布在  其他
关注(0)|答案(1)|浏览(202)

已关闭,此问题需要更focused。目前不接受答复。
**想改善这个问题吗?**更新问题,使其仅通过editing this post关注一个问题。

1小时前关闭
Improve this question
我正在努力寻找一种简单的方法来找到字符串中第一个字母[a-zA-z]的索引。
如何验证正则表达式是否在字符串中

vecaoik1

vecaoik11#

一种方法是使用std::find_if并在函子中提供条件,如lambda:

#include <algorithm>
#include <cctype>

std::string str = "..."; // filled with something

auto it = std::find_if(str.begin(), str.end(), [](unsigned char ch) {
    // return true if a letter [a-zA-Z] is found:
    return std::tolower(ch) >= 'a' && std::tolower(ch) <= 'z';
});

if(it != str.end()) {
    std::cout << "the first letter is " << *it << '\n';
} else {
    std::cout << "No letter was found\n";
}

如果标准的C语言环境有效,则上述内容可以简化为:

auto it = std::find_if(str.begin(), str.end(), [](unsigned char ch) {
    return std::isalpha(ch);
});

如果你想要索引,只需要从str.begin()到指向找到的字母的迭代器的距离:

#include <iterator>

// ...

if(it != str.end()) {
    std::size_t index = static_cast<std::size_t>(std::distance(str.begin(), it));
    std::cout << "the first letter is at index " << index << '\n';
}

相关问题