如何查找和替换字符串中所有出现的子字符串?

 冠吸柏芝霆疯 发布于 2023-02-12 16:36

我需要搜索一个字符串并编辑它的格式.

到目前为止,我可以替换第一次出现的字符串,但是我无法在下一次出现此字符串时这样做.

这就是我的工作,有点像:

if(chartDataString.find("*A") == string::npos){ return;}
else{chartDataString.replace(chartDataString.find("*A"), 3,"[A]\n");}

如果找不到字符串,则根本不打印任何内容,因此不好.

我知道我需要遍历整个字符串chartDataString并替换所有出现的事件.我知道有很多类似的帖子,但我不明白(像这样用另一个子串C++替换子串)

我也尝试过这样的事情来循环遍历字符串:

string toSearch = chartDataString;
string toFind = "*A:";
for (int i = 0; i

编辑考虑到建议,这在理论上应该有效,但我不知道为什么不这样做

size_t startPos=0;
string myString = "*A";
while(string::npos != (startPos = chartDataString.find(myString, startPos))){
    chartDataString.replace(chartDataString.find(myString, startPos), 3, "*A\n");
    startPos = startPos + myString.length();
}   

Vlad from Mo.. 22

尝试以下方法

const std::string s = "*A";
const std::string t = "*A\n";

std::string::size_type n = 0;
while ( ( n = chartDataString.find( s, n ) ) != std::string::npos )
{
    chartDataString.replace( n, s.size(), t );
    n += t.size();
}


Guy Avraham.. 6

如果boost可用,您可以使用以下内容:

std::string origStr = "this string has *A and then another *A";
std::string subStringToRemove = "*A";
std::string subStringToReplace = "[A]";

boost::replace_all(origStr , subStringToRemove , subStringToReplace);

要对原始字符串执行修改,请执行

std::string result = boost::replace_all_copy(origStr , subStringToRemove , subStringToReplace);

在不修改原始字符串的情况下执行修改.

2 个回答
  • 尝试以下方法

    const std::string s = "*A";
    const std::string t = "*A\n";
    
    std::string::size_type n = 0;
    while ( ( n = chartDataString.find( s, n ) ) != std::string::npos )
    {
        chartDataString.replace( n, s.size(), t );
        n += t.size();
    }
    

    2023-02-12 16:38 回答
  • 如果boost可用,您可以使用以下内容:

    std::string origStr = "this string has *A and then another *A";
    std::string subStringToRemove = "*A";
    std::string subStringToReplace = "[A]";
    
    boost::replace_all(origStr , subStringToRemove , subStringToReplace);
    

    要对原始字符串执行修改,请执行

    std::string result = boost::replace_all_copy(origStr , subStringToRemove , subStringToReplace);
    

    在不修改原始字符串的情况下执行修改.

    2023-02-12 16:38 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有