首页 > 后端开发 > C++ > 正文

如何修剪和减少 C 中的字符串?

DDD
发布: 2024-11-13 11:56:02
原创
227 人浏览过

How can I trim and reduce strings in C  ?

C 语言中的修剪和缩减字符串

修剪和缩减字符串是编程中的常见操作。修剪是指从字符串中删除前导和尾随空白字符,而减少涉及用单个预定义字符或字符串替换连续的空白字符。

修剪字符串

要修剪 C 中的字符串,您可以可以使用 find_first_not_of 和 find_last_not_of 方法来识别第一个和最后一个非空白字符。下面的代码说明了这种方法:

#include <string>

std::string trim(const std::string& str) {
    const auto strBegin = str.find_first_not_of(" \t");
    if (strBegin == std::string::npos)
        return ""; // no content

    const auto strEnd = str.find_last_not_of(" \t");
    const auto strRange = strEnd - strBegin + 1;

    return str.substr(strBegin, strRange);
}
登录后复制

减少字符串

减少字符串涉及用预定义的字符或字符串替换连续的空白字符。这是执行此操作的函数:

std::string reduce(const std::string& str, const std::string& fill = " ", const std::string& whitespace = " \t") {
    // trim first
    auto result = trim(str);

    // replace sub ranges
    auto beginSpace = result.find_first_of(whitespace);
    while (beginSpace != std::string::npos) {
        const auto endSpace = result.find_first_not_of(whitespace, beginSpace);
        const auto range = endSpace - beginSpace;

        result.replace(beginSpace, range, fill);

        const auto newStart = beginSpace + fill.length();
        beginSpace = result.find_first_of(whitespace, newStart);
    }

    return result;
}
登录后复制

用法示例

这是演示修剪和归约函数用法的示例:

const std::string foo = "    too much\t   \tspace\t\t\t  ";
const std::string bar = "one\ntwo";

std::cout << "[" << trim(foo) << "]" << std::endl;
std::cout << "[" << reduce(foo) << "]" << std::endl;
std::cout << "[" << reduce(foo, "-") << "]" << std::endl;

std::cout << "[" << trim(bar) << "]" << std::endl;
登录后复制

输出

[too much               space]  
[too much space]  
[too-much-space]  
[one  
two]
登录后复制

以上是如何修剪和减少 C 中的字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板