5

我需要这个简单的拆分

Item one, Item2,  Item no. 3,Item 4
>
Item one
Item2
Item no.3
Item 4
  • 我知道我可以在scanf%*[, ]中使用格式来忽略逗号和空格,但这并不准确:分隔符应该恰好是一个逗号,后跟空格。
  • 我想我也不能使用strtok,因为单独的空间不是分隔符。

我真的需要这里的正则表达式,还是有任何有效的简短方法来编码?

4

2 回答 2

6

怎么样:

char inputStr[] = "Item one, Item2,  Item no. 3,Item 4";
char* buffer;

buffer = strtok (inputStr, ",");

while (buffer) {
    printf ("%s\n", buffer);          // process token
    buffer = strtok (NULL, ",");
    while (buffer && *buffer == '\040')
        buffer++;
}

输出:

Item one
Item2
Item no. 3
Item 4
于 2013-09-09T11:20:04.160 回答
0

您可以逐步查找字符串,或 0x00 并将 any 替换为 0x00,然后跳过任何空格以查找下一个字符串的开头。正则表达式要容易得多。

于 2013-09-09T11:06:11.933 回答