如何从 C++ 中的字符串中删除前缀或后缀? [复制]

Posted

技术标签:

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

其他人询问过

how to remove an arbitrary substring from a string in c++. how to check whether a string ends with a given prefix how to check whether a string ends with a given suffix

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

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

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

【问题讨论】:

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

【讨论】:

以上是关于如何从 C++ 中的字符串中删除前缀或后缀? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何在rust中迭代str或String的前缀和后缀?

从Swift数组中的选定复选标记中删除字符串

如何从bash中的ispell .mwl文件中提取所有前缀词

如何在 Swift 中检查字符串以(前缀)开头或以(后缀)结尾

后缀(前缀)增量、左值和右值(在 C 和 C++ 中)

mysql批量删除指定前缀或后缀表