给定一个包含字母和数字组合的字符串Ex:ab1c23de5,我需要在相同的字符串Ex:abcde 12345中将数字和字符彼此隔离。如何在C ??
中完成答案 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;
}