c - C 中的字符串分词器

标签 c string replace character tokenize

以下代码将使用空格(即“”)和句号(即“.”)来分解字符串命令。如果我想使用空格和句号(同时)的出现来分解命令,而不是单独使用它们,例如,该怎么办?像这样的命令:“hello .how are you”将被分成几部分(忽略引号) [你好] [你今天怎么样]

char *token2 = strtok(command, " .");

最佳答案

您可以使用 strstr 轻松完成此操作:

char *strstrtok(char *str, char *delim)
{
    static char *prev;
    if (!str) str = prev;
    if (str) {
        char *end = strstr(str, delim);
        if (end) {
            prev = end + strlen(delim);
            *end = 0;
        } else {
            prev = 0;
        }
    }
    return str;
}

这与 strtok 的实现几乎完全相同,只需调用 strstrstrlen而不是strcspnstrspn 。它还可能返回空标记(如果有两个连续的分隔符或两端各有一个分隔符);如果您愿意,可以安排忽略这些内容。

关于c - C 中的字符串分词器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7136528/

相关文章:

c - 使用双指针访问链表的节点

objective-c - 使用 scanf 在循环中使用多个变量

JavaScript 正则表达式在字符串末尾查找开始标签

c++ - 替换字符串中的重复项

javascript - 用于将对象符号转换为数组值的正则表达式

c - 此 c 代码的作用是什么以及如何获得授予的访问权限

c# - 如何使用 FQL Facebook 获取评论评论

javascript - 如何使用拼接删除数组中每个字符串的第一个字母?

php mysql 更新 blob

javascript - 正则表达式适用于 regex101 但不适用于 javascript