如何解析字符串并用某些内容替换\.
的所有出现?但同时将所有\\
替换为\
(字面值)。示例:
hello \. world
=> hello "." world
hello \\. world
=> hello \. world
hello \\\. world
=> hello \"." world
第一反应是使用std :: replace_if,如下所示:
bool escape(false);
std::replace_if(str.begin(), str.end(), [&] (char c) {
if (c == '\\') {
escape = !escape;
} else if (escape && c == '.') {
return true;
}
return false;
},"\".\"");
但是,这只是\.
个\"."
序列的变化。此外,它不适用于\\
部分的盯着。
这是一种优雅的方法吗?在我开始使用for循环和&重建字符串?
答案 0 :(得分:2)
优雅的方法:有三种状态的有限状态机:
要实现,您可以使用默认字符串库中的迭代器和replace
方法。