"Ampli" "I-6ren">
gpt4 book ai didi

c++ - 如何检查最后一个子字符串是否是一个值,如果是则将其删除

转载 作者:行者123 更新时间:2023-11-28 00:20:54 24 4
gpt4 key购买 nike

我需要从一些字符串中删除“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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com