我需要从一些字符串中删除“Time”,如果它作为最后一个子字符串存在。该解决方案需要适用于这些情况:
"AmpliTime" => "Ampli"
"IsoTimeTime" => "IsoTime"
"SometypeTimeAndThenTime" => "SometypeTimeAndThen"
"SometypeTimeAndThenTimeAbc" => "SometypeTimeAndThenTimeAbc"
我试过类似的方法,但如果 Time 这个词出现在结尾之外的其他地方,它就会遇到问题。
long start = s.find("Time");
if (start > 0)
{
printf("%d\n", start);
s.erase(start, 5);
}
printf("%d\n", start);
最佳答案
rfind
可能效率低下,因为在字符串不 以Time
结尾的情况下,它将继续搜索字符串。
compare
会准确查看您感兴趣的字符串部分:
if (s.size() >= 4 && s.compare(s.size()-4, 4, "Time") == 0) {
s.resize(s.size() - 4);
}
如您所见,我在代码中使用了四次 4
。可疑的风格,但它完成了工作。我已经决定,对于固定字符串如此短的情况,这比将长度放在变量中更清楚,但是 YMMV。
关于c++ - 如何检查最后一个子字符串是否是一个值,如果是则将其删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27572463/