【问题标题】:How to remove a prefix or a suffix from a string in c++? [duplicate]如何从 C++ 中的字符串中删除前缀或后缀? [复制]
【发布时间】:2021-07-18 09:02:35
【问题描述】:

其他人询问过

但是,尚未有人询问如何在 c++ 中从字符串中删除前缀或后缀。假设我们知道给定的字符串以特定的前缀/后缀开头,则可以使用一些专门的方法。

那么:鉴于以下情况,我们如何删除前缀和后缀?

  std::string prefix = "prefix.";
  std::string suffix = ".suffix";
  std::string full_string = "prefix.content.suffix";
  std::string just_the_middle = ???;

【问题讨论】:

  • 当您知道如何删除任意子字符串时,您也知道如何删除前缀/后缀,不是吗?
  • 是的,删除任意子字符串的技术确实可以删除前缀/后缀。但是,给定删除前缀/后缀的技术,这些技术不一定适用于删除任意子字符串。我的目的是收集专门用于删除前缀/后缀的技术,这可能涉及比适用于任意子字符串的技术更清晰/更清晰的代码。
  • 抱歉,但它们没有(涉及更清晰/更清晰的代码)。关于“如何消除任意性?”的公认答案专门用于删除后缀(以及问题,只是标题更笼统)
  • 您链接的帖子实际上在删除后缀方面比您在此帖子上的回答做得更好。

标签: c++ string prefix suffix


【解决方案1】:

由于我们提前知道full_string 以前缀/后缀开头/结尾,因此可以使用std::string::substr

  std::string prefix = "prefix.";
  std::string suffix = ".suffix";
  std::string full_string = "prefix.content.suffix";
  
  // prefix removal
  std::string result1 = full_string.substr(prefix.length());
  
  // suffix removal
  std::string result2 = full_string.substr(0, full_string.length() - suffix.length());

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-08
    • 2023-04-05
    • 2014-05-06
    • 2019-05-30
    • 2016-12-30
    • 2015-03-27
    相关资源
    最近更新 更多