如何选择何时用逗号分割字符串

问题描述 投票:0回答:1

我有一个字符串,需要用逗号分隔,但是我不想在字符串上用逗号分隔。

所以,我的字符串是:

Let's eat, Granny,Happy,22,Chicken

我想这样分割它:

Let's eat, Granny
Happy
22
Chicken

但是我得到了这个:

Let's eat
 Granny
Happy
22
Chicken

我如何在不弄乱第一个逗号的情况下拆分此字符串?我确实有一个想法,那就是我想忽略的逗号后面有空格,我也许可以利用它,对吗?如果我错了,请纠正我。

这里是我到目前为止编写的代码:

string delimiter = ",";
string test = "Let's eat, Granny,Happy,22,Chicken,";
size_t pos = 0;
string token;

while((pos = test.find(delimiter)) !=String::npos){ //position of comma

    token = test.substr(0, pos); //read in string at position of comma

}
c++
1个回答
0
投票

鉴于您限于的数据,逗号实际上不是可靠的分隔符,除非您可以保证任何可忽略的逗号总是后跟空格。如果是这样,您可以执行以下操作:

char delimiter = ',';
string test = "Let's eat, Granny,Happy,22,Chicken,";
size_t start = 0, end;
string token;

do
{
    end = test.find(delimiter, start);

    while ((end != string::npos) &&
           ((end+1) < test.size()) &&
           (test[end+1] == ' '))
    {
        end = test.find(delimiter, end+2);
    }

    if (end == string::npos)
        token = test.substr(start);
    else
        token = test.substr(start, end-start);

    // use token as needed...

    start = end + 1;
}
while (end != string::npos);

Live Demo

© www.soinside.com 2019 - 2024. All rights reserved.