📅  最后修改于: 2023-12-03 15:37:34.686000             🧑  作者: Mango
在开发过程中,我们有时会遇到需要将字符串中的尾随零删除的需求。例如,从数据库中查询出的数据可能存在尾随零,需要将其删除后再进行其他操作。
下面介绍两种从字符串中删除尾随零的方法。
C++标准库提供了一系列操作字符串的函数,其中包括删除字符串末尾的空格函数std::remove_if()
。可以根据这个函数来实现删除字符串末尾的尾随零。
#include <string>
#include <algorithm>
std::string removeTrailingZeros(std::string str) {
str.erase(std::find_if(str.rbegin(), str.rend(), [](int ch) {
return ch != '0';
}).base(), str.end());
return str;
}
该函数利用了lambda表达式,将字符串从右向左遍历,找到第一个不是零的字符,然后删除该字符及其右侧的所有字符。最后返回删除后的字符串。
使用正则表达式也可以实现删除字符串末尾的尾随零。
#include <regex>
#include <string>
std::string removeTrailingZeros(std::string str) {
std::regex pattern("[0]*$");
str = std::regex_replace(str, pattern, "");
return str;
}
该函数使用正则表达式[0]*$
匹配字符串末尾的所有零。然后使用std::regex_replace()
函数将匹配到的零替换为空字符串。最后返回替换后的字符串。
使用上述两种方法都可以实现删除字符串末尾的尾随零。第一种方法使用了C++标准库中的函数和lambda表达式,代码相对简单。第二种方法使用了正则表达式,代码稍微复杂,但更加灵活,可以删除任意字符。