【发布时间】:2021-02-10 23:04:22
【问题描述】:
假设我有三个这样的字符串
"RES-003 :"
"RES 007 :"
" RES-015 :"
我希望他们在展示时看起来像那样
"RES-003:"
"RES 007:"
"RES-015:"
我试图解决这个问题,但是我无法正确解决,因为当我尝试清理冒号和数字之间的空格时,我删除了第二个字符串“RES 007 :”中的空格,所以它会改变它到“RES007:”。
我的修剪功能是这样的。
std::string& Reservation::trim(std::string& s) {
bool valid = true;
s.erase(0, s.find_first_not_of(' '));
s.erase(s.find_last_not_of(' ') + 1);
while (valid)
{
if (s.find(" ") != std::string::npos) {
s.erase(s.find(" "), 1);
valid = true;
if (s.find(" ") != std::string::npos) {
s.erase(s.find(" "), 1);
valid = true;
}
}
else
valid = false;
}
return s;
}
我可以做些什么来改进它或者我必须完全替换它?
【问题讨论】:
-
如果你知道字符串的格式,即3个字符连字符3个数字空格冒号,然后找到第一个非空格字符,将接下来的7读入一个新字符串。
-
从头到尾修剪空格。将所有多空格修剪为单个空格。将空格冒号修剪为冒号。砰,完成。
-
@Eljay 好主意。谢谢!