包含逗号和逗号分隔符的拆分字符串

时间:2017-11-25 21:59:21

标签: string split

使用std C ++,我想拆分一个用逗号分隔的字符串,但忽略用单引号括起来的字符串中的逗号。例如:

1,' 2,3',4,5-,' 6,7',8

当分裂成为

1
'2,3'
4
5
'6,7'
8

我认为这可能最好用正则表达式处理,但我不确定如何构建模式。任何没有正则表达式的解决方案也是受欢迎的。感谢。

1 个答案:

答案 0 :(得分:0)

我不确定C ++语法是什么,但这里有一些伪代码:

vector<string> split(const string& value)
{
    bool is_escaped = false;
    vector<char> current;
    vector<string> result;

    for (char c : value)
    {
        if (c == '\'')
        {
            is_escaped = !is_escaped;
        }

        if (c == ',' && !is_escaped)
        {
            result.push_back(string(current.begin(), current.end());
            current.clear();
        }
        else
        {
            current.push_back(c);
        }
    }

    result.push_back(string(current.begin(), current.end());
    return result;
}

显然你需要将它调整为有效的C ++,但它应该可以解决问题。