用IndexOf判断重复,统计个数

在学习String的相关方法的时候,接触到了IndexOf方法(当然还有LastIndexOf)。

它可以很方便地帮我们定位,当然它的作用还不止如此。

比如,有时候我们需要判断一个字符或者子串是否重复,用IndexOf,不用统计,也能知道是否重复。

拿@为例,如果在一个textBox中,要判断是否重复可用如下作法:


int b = textBox1.Text.IndexOf('@');
if (b >= 0 && b != textBox1.TextLength - 1)
{
    if (textBox1.Text.IndexOf('@', b + 1) > 0)
    {
        MessageBox.Show("@重复出现!");
    }
}

另外,更进一步,顺着上面的思路,似乎我们还可以用它来计数。

当第一个@的位置不在该字符串的最后一位时,则继续向后检索。


            int k = 0,s;
            int c = textBox3.Text.IndexOf('@');
            if (c >= 0)
            {
                k = 1;
                if(c != textBox3.TextLength - 1)
                {
                    for (s = c + 1; s <= textBox3.TextLength - 1;s++ )
                    {
                        if (textBox3.Text.IndexOf('@',s) > 0)
                        {
                            k++;
                        }
                    }
                }
            }

首先,找到第一个目标字符,然后再规定往后的每次检索,都从目标字符后一个开始,看看后面还有没有@。

利用for循环来实现,最终K的值就代表了该字符串中有多少个@。




好的,我来为您解答这些问题。 1. C语言中删除字符串中的重复字符可以通过以下代码实现: ```c #include <stdio.h> #include <string.h> void removeDuplicates(char str[]){ int len = strlen(str); int index = 0; for(int i=0; i<len; i++){ int j; for(j=0; j<i; j++){ if(str[i] == str[j]){ break; } } if(j == i){ str[index++] = str[i]; } } str[index] = '\0'; } int main() { char str[100]; printf("Enter a string:\n"); fgets(str, 100, stdin); removeDuplicates(str); printf("String after removing duplicates: %s", str); return 0; } ``` 2. C语言中判断个数是否为回文数可以通过以下代码实现: ```c #include <stdio.h> #include <stdbool.h> bool isPalindrome(int num){ int temp = num; int reverse = 0; while(temp != 0){ reverse = reverse * 10 + temp % 10; temp /= 10; } return num == reverse; } int main() { int num; printf("Enter a number:\n"); scanf("%d", &num); if(isPalindrome(num)){ printf("%d is a palindrome number.", num); }else{ printf("%d is not a palindrome number.", num); } return 0; } ``` 3. C语言中统计字符串中单词的个数可以通过以下代码实现: ```c #include <stdio.h> #include <string.h> #include <ctype.h> int countWords(char str[]){ int count = 0; int len = strlen(str); for(int i=0; i<len; i++){ if(isspace(str[i]) || ispunct(str[i])){ count++; } } return count; } int main() { char str[100]; printf("Enter a string:\n"); fgets(str, 100, stdin); int count = countWords(str); printf("Number of words in the string: %d", count); return 0; } ``` 4. C语言中判断一个字符串是否为合法的C标识符可以通过以下代码实现: ```c #include <stdio.h> #include <string.h> #include <stdbool.h> #include <ctype.h> bool isValidIdentifier(char str[]){ int len = strlen(str); if(!isalpha(str[0]) && str[0] != '_'){ return false; } for(int i=1; i<len; i++){ if(!isalnum(str[i]) && str[i] != '_'){ return false; } } return true; } int main() { char str[100]; printf("Enter a string:\n"); fgets(str, 100, stdin); if(isValidIdentifier(str)){ printf("%s is a valid C identifier.", str); }else{ printf("%s is not a valid C identifier.", str); } return 0; } ``` 5. C语言中密码翻译可以通过以下代码实现: ```c #include <stdio.h> #include <string.h> void translatePassword(char password[]){ int len = strlen(password); for(int i=0; i<len; i++){ if(password[i] >= 'a' && password[i] <= 'z'){ password[i] = 'a' + 'z' - password[i]; }else if(password[i] >= 'A' && password[i] <= 'Z'){ password[i] = 'A' + 'Z' - password[i]; } } } int main() { char password[100]; printf("Enter a password:\n"); fgets(password, 100, stdin); translatePassword(password); printf("Translated password: %s", password); return 0; } ``` 以上就是您提出的问题的解答,希望能对您有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值