根据分度分割字符串

Split a string based on delimeter

本文关键字:分割 字符串      更新时间:2023-10-16

我的分量表可以是除 [0-9] 之外的任何内容,[A-Z] 不区分
大小写因此,我想要一种基于动态分隔符拆分字符串的方法。我目前正在使用boost,但也对其他解决方案持开放态度。

我目前使用的代码涉及提升,是这样的:

vector<string> split_;
boost::split(split,line,boost::is_any_of("t"));

如何调整上面的代码,使其符合我的分隔符标准?有没有其他库可以帮助我完成此操作?有什么建议吗?

词可以组合:

        !(
            boost::is_from_range('a','z') || 
            boost::is_from_range('A','Z') || 
            boost::is_from_range('0','9')
         )

这种魔力是由于Boost Lambda库AFAIR。无论如何,您可以使用它:

住在科里鲁

#include <boost/algorithm/string.hpp>
#include <vector>
#include <iostream>
int main() {
    std::vector<std::string> split_;
    std::string line("one;two#three//four fivern"
            "six");
    boost::split(split_,line,
            !(
                boost::is_from_range('a','z') || 
                boost::is_from_range('A','Z') || 
                boost::is_from_range('0','9')
             )
            );
    for(auto const& s : split_)
        std::cout << s << "n";
}

考虑一个正则表达式拆分算法

住在科里鲁

#include <boost/regex.hpp>
#include <vector>
#include <iostream>
int main()
{
    std::string line("one;two#three//four fivern"
            "six");
    boost::regex re("[^a-zA-Z0-9]");
    boost::sregex_token_iterator i(line.begin(), line.end(), re, -1), j;
    std::vector<std::string> split_(i, j);
    for(auto const& s : split_)
        std::cout << s << "n";
}