我正在寻找一种从字符串中剥离数字的简单解决方案。 示例:“GA1UXT4D9EE1”=> “GAUXTDEE”
字符串中数字的出现是不稳定的,因此我不能依赖scanf()等函数。
我是C.的新编程。 谢谢你的帮助。
答案 0 :(得分:3)
我会给你一些提示:
答案 1 :(得分:1)
遍历字符串并检查ascii值。
for(i = 0; i < strlen(str); i++)
{
if(str[i] >= 48 && str[i] <= 57)
{
// do something
}
}
答案 2 :(得分:1)
char stringToStrip[128];
char stripped[128];
strcpy(stringToStrip,"GA1UXT4D9EE1");
const int stringLen = strlen(stringToStrip);
int j = 0;
char currentChar;
for( int i = 0; i < stringLen; ++i ) {
currentChar = stringToStrip[i];
if ((currentChar < '0') || (currentChar > '9')) {
stripped[j++] = currentChar;
}
}
stripped[j] = '\0';
答案 3 :(得分:0)
我同意走过这将是一个简单的方法,但也有一个更容易的功能来做到这一点。您可以使用isdigit()。 C ++文档有一个很棒的例子。 (别担心,这也适用于c。)
答案 4 :(得分:0)
这是执行此操作的代码。
int i;
int strLength = strlen(OriginalString);
int resultPosCtr = 0;
char *result = malloc(sizeof(char) * strLength);//Allocates room for string.
for(i = 0; i < strLength; i++){
if(!isdigit(OriginalString[i])){
result[resultPosCtr] = OriginalString[i];
resultPosCtr++;
}
}
result[resultPosCtr++] = '\0'; //This line adds the sentinel value A.K.A the NULL Value that marks the end of a c style string.
每个人都做得对。