问题
In C, what is the best way to parse a string with multiple delimiters? Say I have a string A,B,C*D and want to store these values of A B C D. I'm not sure how to deal with the * elegantly, other than to store the last string C*D and then parse that separately with a * delimiter.
If it was just A,B,C,*D I'd use strtok() and ignore the first index of the *D to get just D, but there is no comma before the * so I don't know that * is coming.
回答1:
You can use multiple delimiters with strtok, the second argument is a C string with the list of delimiters in it, not just a single delimiter:
#include <stdio.h>
#include <string.h>
int main (void) {
char myStr[] = "A,B,C*D";
char *pChr = strtok (myStr, ",*");
while (pChr != NULL) {
printf ("%s ", pChr);
pChr = strtok (NULL, ",*");
}
putchar ('\n');
return 0;
}
The output of that code is:
A B C D
来源:https://stackoverflow.com/questions/27791179/parsing-with-multiple-delimiters-in-c