拆分字符串但保留 C 中的分隔符

谷歌机器人

我想按字母字符拆分字符串。我开始了strtok

char str[] = "A89 99B0 C11D98 9";
char delim[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

char *ptr = strtok(str, delim);

while(ptr != NULL)
{
    printf("%s\n", ptr);
    ptr = strtok(NULL, delim);
}

但我需要保留分隔符。就像是

A89 99
B0 
C11
D98 9

我怀疑它是否可行strtok,我应该寻找另一种方法(例如,正则表达式)。

我想到的一种可能的解决方案是在字符串中的每个字母字符之前插入一个非字母数字分隔符,然后strtok用于这个分隔符。

威廉·珀塞尔

这取决于您对数据的处理方式,因为您很可能不需要构造实际的字符串。如果您可以避免复制数据以包含空终止符,则它可能很有用。例如:

#include <stdio.h>
#include <string.h>
char str[] = "A89 99B0 C11D98 9";
char delim[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

int
main(void)
{
        char *ptr = str;
        while( *ptr ){
                size_t next = strcspn(ptr + 1, delim) + 1;
                fwrite(ptr, 1, next, stdout);
                putc('\n', stdout);
                ptr += next;
        }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java Regex在分隔符和保留分隔符之间拆分字符串

如何使用2个分隔符的正则表达式拆分字符串,但将分隔符保留在Python中?

如何拆分字符串并保留特定的分隔符?

在C中使用分隔符分割字符串

需要从C#中的分隔符提取字符串

在多个分隔符上拆分字符串,同时保留一个或多个分隔符

将字符串拆分为数组,在Swift中保留定界符/分隔符

在带有多个分隔符的python中拆分字符串的最佳方法-同时保留分隔符

是否像C ++中那样带有分隔符的C#原始字符串?

具有多个分隔符的C#拆分字符串

从C ++中的字符串中提取两个分隔符之间的子字符串

分割字符串并将分隔符字符串保留在C#中

c# 使用另一个字符串作为分隔符拆分字符串并将分隔符作为拆分字符串的一部分包含在内

C# 正则表达式无法通过管道分隔符拆分字符串

C - 将带有重复分隔符字符的字符串拆分为 2 个子字符串

根据子字符串分隔符拆分字符串,将分隔符保留在结果中

用分隔符连接 C 中的字符串

分隔符字符串拆分

使用字符分隔符在 C++ 中解析字符串,但在每个解析的子字符串(C++ STL)中保留可重复字符作为分隔符

如何拆分嵌入在 C++ 中的分隔符中的字符串?

如何在 C# 中拆分字符串并保留分隔符

基于分隔符模式的 C# 字符串拆分 [,]

C# 浮点到字符串分隔符

在Python中拆分字符串时如何保留分隔符?

使用多个分隔符拆分字符串并保留分隔符

如何拆分字符串但保留分隔符?

C# 字符串在分隔符之間拆分

拆分字符串並保留分隔符

通过多个分隔符拆分字符串并保留分隔符