所以我有以下功能:
void tokenize() {
char *word;
char text[] = "Some - text, from stdin. We'll see! what happens? 4ND 1F W3 H4V3 NUM83R5?!?";
int nbr_words = 0;
word = strtok(text, " ,.-!?()");
while (word != NULL) {
printf("%s\n", word);
word = strtok(NULL, " ,.-!?()");
nbr_words += 1;
}
}
输出是:
Some
text
from
stdin
We'll
see
what
happens
4ND
1F
W3
H4V3
NUM83R5
13 words
基本上我正在做的是将文本段落标记为单词,以便将来进行进一步分析。我有我的文本,我有我的分隔符。唯一的问题是与所有其他分隔符同时标记数字。我知道我可以isdigit
在ctype.h
. 但是,我不知道如何将其包含在strtok
.
例如(显然是错误的):strtok(paragraph, " ,.-!?()isdigit()");
类似的东西。但是由于在这个阶段我有每个标记(单词),是否有某种后处理if
语句我可以用来进一步标记每个单词,在数字处拆分?
例如,输出将进一步降级为:
ND
F
W
H
V
NUM
R
15 words // updated counter to include new tokens