字符的基本处理


    // trim all white space
    string str1 = "this is a  test   str to be trimed!  ";
    string str2 = "    ";
    string str3 = "1,2,3,4,5";

    auto splitBy = [](string& src, string tar) -> vector<string> {
        int st = 0;
        vector<string> res;
        while (st < src.size()) {
            auto pivot = src.find_first_of(tar, st);
            if (pivot > src.size()) {
                res.push_back(src.substr(st));
                return res;
            }
            res.push_back(src.substr(st, pivot - st));
            st = pivot + 1;
        }
        return res;
    };

    auto trimSpacesTo1 = [](string& src, string tar) -> string {
        // delete leading, tailing
        int st = 0;
        cout << "dele:" << tar << "|\n";
        size_t leadSpace = src.find_first_not_of(" ", 0);
        if (leadSpace > src.size()) {
            src = "";
            return src;
        }
        src.erase(src.begin(), src.begin() + leadSpace);
        size_t tailSpace = src.find_last_not_of(" ");
        if (leadSpace > src.size()) {
            return src;
        }
        src.erase(src.begin() + tailSpace + 1, src.end());
     
        while (1) {
            size_t nextSt = src.find_first_of(tar, st);
            if (nextSt > src.length()) {
                break;
            }

            // from nextSt get space len
            size_t nextNotSpace = src.find_first_not_of(tar, nextSt + 1);
            if (nextNotSpace - nextSt >= 2) {
                src.erase(src.begin() + nextSt, src.begin() + nextNotSpace - 1);
            }
            st = nextSt + 1;
            // src.replace(src.begin() + st, src.begin() + nextSt, "");
        }
        return src;
    };
    
    string tar = " ";
    cout << trimSpacesTo1(str1, tar) << "|" << trimSpacesTo1(str2, tar) << "|\n";
    
    auto strToVec = splitBy(str3, ",");
    for (auto str : strToVec) {
        cout << str << " - ";
    }
    cout << "\n";


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值