从字符串中的数字拆分字母表

时间:2014-04-30 11:06:44

标签: c

给定一个包含字母和数字组合的字符串Ex:ab1c23de5,我需要在相同的字符串Ex:abcde 12345中将数字和字符彼此隔离。如何在C ??

中完成

2 个答案:

答案 0 :(得分:1)

以下代码将执行此操作。

#include <stdio.h>
#include <ctype.h>

int main()
{
    char arr[] = "ab1c23de5";
    int i;

    for (i=0; i < strlen(arr); i++)
    {
        if (isdigit(arr[i]))
        {
            printf("Digit %d\n", arr[i] - '0');
        }
        else if (isalpha(arr[i]))
        {
            printf("Alpha %c\n", arr[i]);
        }
    }

    return 0;
}

答案 1 :(得分:0)

您可以在C#中使用Regex.Matches进行匹配。这样,alpha字符被添加到list1,数字字符被添加到list2。请注意括号内的差异,它们为您的工作提供了一种模式。

将C#用于数字

regex = new Regex("[0-9]");

if (regex.IsMatch(compare))
{ 
    //true
}

将C#用于字母

regex = new Regex("[a-zA-Z]");

if (regex.IsMatch(compare))
{ 
    //true
}

将C用于数字

regex_t re;
char file[] = "hello777world99yew 8 I8909do23!";
const char *p = file;
regmatch_t match;

if(regcomp(&re, "[0-9]+", REG_EXTENDED) != 0) exit(1);

while(regexec(&re, p, 1, &match, 0) == 0)
{
  printf("%.*s\n", (int)(match.rm_eo - match.rm_so), &p[match.rm_so]);
  p += match.rm_eo;
}

使用C代表字母

regex_t re;
    char file[] = "hello777world99yew 8 I8909do23!";
    const char *p = file;
    regmatch_t match;

    if(regcomp(&re, "[a-zA-Z]+", REG_EXTENDED) != 0) exit(1);

    while(regexec(&re, p, 1, &match, 0) == 0)
    {
      printf("%.*s\n", (char)(match.rm_eo - match.rm_so), &p[match.rm_so]);
      p += match.rm_eo;
    }