首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用std::regex_replace将字符串替换为小写?

如何使用std::regex_replace将字符串替换为小写?
EN

Stack Overflow用户
提问于 2018-11-02 04:37:55
回答 1查看 950关注 0票数 2

我找到了替换Regex replace uppercase with lowercase letters的正则表达式

代码语言:javascript
运行
复制
Find: (\w) Replace With: \L$1 

我的代码

代码语言:javascript
运行
复制
string s = "ABC";
cout << std::regex_replace(s, std::regex("(\\w)"), "\\L$1") << endl;

在2017中运行。

产出:

\LA\LB\LC

如何用C++编写小写函数标记?

EN

Stack Overflow用户

回答已采纳

发布于 2018-11-02 06:33:28

由于没有像\L那样的魔力,我们必须妥协--使用regex_search并手动地将鞋帮隐藏到较低的位置。

代码语言:javascript
运行
复制
template<typename ChrT>
void RegexReplaceToLower(std::basic_string<ChrT>& s, const std::basic_regex<ChrT>& reg)
{
    using string = std::basic_string<ChrT>;
    using const_string_it = string::const_iterator;
    std::match_results<const_string_it> m;
    std::basic_stringstream<ChrT> ss;

    for (const_string_it searchBegin=s.begin(); std::regex_search(searchBegin, s.cend(), m, reg);)
    {
        for (int i = 0; i < m.length(); i++)
        {
            s[m.position() + i] += ('a' - 'A');
        }
        searchBegin += m.position() + m.length();
    }
}

void _replaceToLowerTest()
{
    string sOut = "I will NOT leave the U.S.";
    RegexReplaceToLower(sOut, regex("[A-Z]{2,}"));

    cout << sOut << endl;

}
票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53112726

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档