我需要解析我的字符串,但我的分隔符都是除 a-z 和 A-Z 之外的所有字符。 我怎样才能做到这一点?
我想到了 strtok,但我必须将所有字符写为分隔符,而且它会太长。 示例字符串:
Ax'cda2hsa+AsF(f/a as
需要拆分为: "Ax""cda""hsa""AsF""f""a""as"
C 库中是否有解析函数可以将所有分隔符写为间隔?
最佳答案
如果您不想执行 regex(3),您可以直接遍历字符串并自行执行此操作
#include <stdio.h>
#include <string.h>
int main(int ac, char *av[]) {
char string[] = " Ax'cda2hsa+AsF(f/a as";
int i,idx,len;
len = strlen(string);
#define MAX_SPLIT 256
#define MAX_SPLIT_MASK (MAX_SPLIT - 1)
char buf[MAX_SPLIT];
for (idx = 0, i=0;i<len;i++) {
char c = string[i];
if ((c >= 'a' && c <= 'z') || (c >= 'A' && c <='Z')) {
buf[idx++ & MAX_SPLIT_MASK] = c;
} else {
buf[idx++ & MAX_SPLIT_MASK] = '\0';
if (idx > 1)
printf("%s\n",buf);
idx = 0;
}
}
if (idx > 1) {
buf[idx++ & MAX_SPLIT_MASK] = '\0';
printf("%s\n",buf);
}
#undef MAX_SPLIT
#undef MAX_SPLIT_MASK
return 0;
}
关于c - 在C中解析字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8462804/