检查一个字符串是否有多个逗号紧挨着c ++

时间:2018-05-25 22:28:54

标签: c++ string loops

我有大约300万个字符串,看起来像这样:

INSERT INTO my_table(v1, v2, v3, v4, v5, v6, v7) VALUES(1,'STRING','STRING',,,'STRING','STRING');

我需要编写一个脚本来查找彼此相邻的多个逗号的所有实例,并在它们之间插入null

我已经尝试在字符串中循环并检查每个字符,但我想要一个更快的解决方案。

这是我目前的(建议但很慢)的解决方案:

char last_char = line.at(0);
for(std::string::iterator i = line.begin(); i != line.end(); ++i) {
    char current_char = line[i];
    if(current_char == ',' && last_char == ',') {
        //Insert null here
    }
    last_char = current_char;
}

解决方案最好应该很快,因为我需要转换大约3米的行。

总结一下,脚本运行后,字符串应如下所示:

INSERT INTO my_table(v1, v2, v3, v4, v5, v6, v7) VALUES(1, 'STRING', 'STRING', null, null, 'STRING', 'STRING');

2 个答案:

答案 0 :(得分:2)

<!DOCTYPE html>
<html>
<title>contact</title>

    <body>
    <div class=“panel”>
    <center>
    <img src=img/about_blackonorange.png height=215 width=215>
    </center>

<center>        
<div class="twelve columns nav-bar--column">
<nav class="nav-collapse">


    <a href=home.html>home</a>
    <a href=news_v2.html>news</a>
    <a href=visual_v2.html>visual</a>
    <a href=audio_v2.html>audio</a>
    <a href=contact_v2.html>contact</a>
    <a href=about.html>about<a>


</nav>
</div> 
</center>

<style>
div {
    width: 430px;
    center;
    }
div.a {
    word-wrap: normal;
}

</style>

<!—-CONTENT GOES HERE—->

<center>
<p>
<div class="a">
blah blah blah blah blah. 
<br></br>
blah blah blah blah blah. 
</div>
</p>
</center>



    </body>
</html>

答案 1 :(得分:1)

auto pos = line.find(",,");
while (pos != std::string::npos)
{
    line.replace(pos, 1, ",null");
    pos = line.find(",,", pos+5);
}

Live Demo