//
// Created by Mr.V on 2024/1/25.
//

#include "StringUtil.h"


/**
 * 字符串分割
 * @param str
 * @param pattern 切割依据
 * @return
 */
std::vector<std::string> StringUtil::split(std::string str, std::string pattern)
{
    std::string::size_type pos;
    std::vector<std::string> result;
    str += pattern; //扩展字符串以方便操作
    int size = str.size();
    for (int i = 0; i < size; i++)
    {
        pos = str.find(pattern, i);
        if (pos < size)
        {
            std::string s = str.substr(i, pos - i);
            result.push_back(s);
            i = pos + pattern.size() - 1;
        }
    }
    return result;
}

/**
 * 替换str中所有指定字符串
 * @param str 需要替换的源数据
 * @param old_value 需要替换的旧字符
 * @param new_value 需要替换的新字符
 * @return 返回替换后的新str
 */
std::string& StringUtil::replaceAllDistinct(std::string &str, const std::string &old_value, const std::string &new_value)
{
    for (std::string::size_type pos(0); pos != std::string::npos; pos += new_value.length()) {
        if ((pos = str.find(old_value, pos)) != std::string::npos)
            str.replace(pos, old_value.length(), new_value);
        else break;
    }
    return str;
}

/**
 * 去除字符串中的空格
 * @param str
 */
void StringUtil::removeStrSpace(std::string &str)
{
    str.erase(std::remove_if(str.begin(), str.end(), [](unsigned char c) { return std::isspace(c); }), str.end());
}