在期间和逗号之前从字符串中删除空格
Remove spaces from string before period and comma
我可以有一个类似:
的字符串在此期间,邦德遇到了一个令人惊叹的IRS代理商,他引诱了他。
我需要在逗号之前和整个字符串中的逗号之前删除额外的空间。我尝试将其扔进一个char矢量,只有当前字符是"而以下字符是"时,只有push_back
。或",但它行不通。我知道有一种简单的方法可以使用trim(), find()
或erase()
或某种regex
,但我并不是最熟悉的言论。
解决方案可以是(使用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;
}
此功能在输入字符串中获取"修复空间问题"。
在这里演示
在循环中搜索字符串",如果找到一个替换为",:
std::string str = "...";
while( true ) {
auto pos = str.find( " ," );
if( pos == std::string::npos )
break;
str.replace( pos, 2, "," );
}
对"。"做同样的事情。如果您需要处理不同的空间符号,例如TAB,请使用Regex和适当的组。
我不知道如何使用c 的正则义务为C 工作)。
您可以使用此正则:
s+(?=[,.])
REGEX DEMO
首先,无需使用char的向量:您可以通过使用std :: string。
然后,您的方法无法正常工作,因为您的副本独立于空间位置。不幸的是,您只需要删除标点周围的空间,而不是单词之间的空间。
稍微修改代码,您可能会延迟空间的副本,等待第一个非空间的值:如果不是标点符号,您会在字符之前复制一个空间,否则您只需复制非空格char(因此,摆脱空间。
同样,一旦您复制了标点符号,只需循环并忽略以下空间,直到第一个非空间字符。
我本可以写代码。那将是短的。但是我更喜欢让您对方法充分理解完成作业。
相关文章:
- 删除一个线程上有数百万个字符串的大型哈希映射会影响另一个线程的性能
- 如何从给定字符串中删除第二次和第三次出现的$
- 在C++的字符串中搜索和删除某些字符
- 从 C 样式字符串中删除子字符串 "in place" 在C++代码中
- 使用另一个字符串从字符串中删除空格
- 删除/替换C++字符串中的多字符 (ÿû)
- 删除所有字符串后如何恢复 QStringList?
- 如何删除字符串中的前 2 个字符(如果它有"-")
- 根据新的行分隔符从字符串中删除子字符串
- C ++,如何从控制台中输入的字符串中删除字母?
- 删除字符串后C++检测到堆损坏
- 我正在尝试使用 while 循环从字符串中删除字母,直到没有字母。我在这里做错了什么?
- 如何在 c++ 中删除字符串中的某些字符?
- 删除字符串数组
- 删除字符串中具有相同值的任何相邻字母"pair"
- 高效的字符串截断算法,按顺序删除相等的前缀和后缀
- 如何使用双黑斜杠从字符串中删除单反斜杠
- 如何在编译时从string_view中删除子字符串?
- 从文件中读取多行.txt字符串删除空格并创建新文件进行输出
- c字符串 删除非字母/非空格字符 - C++