c++ - 删除字符串中句号和逗号之前的空格

标签 c++ regex string

我可以有一个像这样的字符串:

During this time , Bond meets a stunning IRS agent , whom he seduces .

我需要删除整个字符串中逗号之前和句点之前的多余空格。我尝试将其放入字符 vector 中,但如果当前字符是“”并且后面的字符是“.”,则不会 push_back或“,”但它不起作用。我知道有一种简单的方法可以使用 trim()、find()erase() 或某种 regex但我对正则表达式不是最熟悉的。

最佳答案

解决方案可能是(使用正则表达式库):

std::string fix_string(const std::string& str) {
  static const std::regex rgx_pattern("\\s+(?=[\\.,])");
  std::string rtn;
  rtn.reserve(str.size());
  std::regex_replace(std::back_insert_iterator<std::string>(rtn),
                     str.cbegin(),
                     str.cend(),
                     rgx_pattern,
                     "");
  return rtn;
}

该函数接受输入一个字符串并“修复空格问题”。

Here a demo

关于c++ - 删除字符串中句号和逗号之前的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40937557/

相关文章:

string - 如何找到 Swift 字符串中最后一次出现的子字符串?

c++ - 调用非成员而不是成员函数

c++ - 使用 lambdas 将模板类型的成员作为异常抛出

regex - 提取逗号分隔的字符串

java - BigDecimal 的类型转换

java - 如何转换 JSON 中的部分字符串?

c++ - 结构体的重载运算符作为映射键

c++ - 存储双指针地址并检索其值

Python:函数返回的值未在 Pandas 数据框中更新

java - 匹配字母、数字或空格的正则表达式