C# 字符、字符串过滤,只能输入数字、中文、英文、大写、小写

本文介绍了使用C#实现文本框输入字符过滤的方法,仅允许输入数字、中文、英文、大写、小写以及特殊字符如.、空格、@和中文。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

private void TextBox1_KeyPress(object sender, KeyPressEventArgs e)     //文本框输入字符过滤
        {
          
            if (Convert.ToInt32(e.KeyChar) >= 48 && Convert.ToInt32(e.KeyChar) < 58 ||          //包括数字
                //(Convert.ToInt32(e.KeyChar) >= 65 && Convert.ToInt32(e.KeyChar) < 91) ||        //包括大写字母
                //(Convert.ToInt32(e.KeyChar) >= 97 && Convert.ToInt32(e.KeyChar) < 123) ||       //包括小写字母
                //(Convert.ToInt32(e.KeyChar) == 46) ||                                           //包括.
                //(Convert.ToInt32(e.KeyChar) == 32) ||                                           //包括空格
                //(Convert.ToInt32(e.KeyChar) == 64) ||                                           //包括@
                //(Convert.ToInt32(e.KeyChar) > 127) ||                                           //包括中文
                Convert.ToInt32(e.KeyChar) == 8)                                                //包括退格
            {

            }
            else
            {
                e.Handled = true;
            }


public static bool ReplaceCodes(String Temp)       //检查字符串过滤方法
        {

            string s = Temp;
            int l = s.Length;
            char[] buf = s.ToCharArray();
            string tmp = string.Empty;
            for (int k = 0; k < buf.Length; k++)
            {
                if ((Convert.ToInt32(buf[k]) >= 48 && Convert.ToInt32(buf[k]) < 58))//||        //数字
                //(Convert.ToInt32(buf[k]) >= 65 && Convert.ToInt32(buf[k]) < 91) ||            //大写字母
                //(Convert.ToInt32(buf[k]) >= 97 && Convert.ToInt32(buf[k]) < 123) ||           //小写字母
                //(Convert.ToInt32(buf[k]) == 46) ||                                            //.
                //(Convert.ToInt32(buf[k]) == 32) ||                                            //空格
                //(Convert.ToInt32(buf[k]) == 64) ||                                            //@
                //(Convert.ToInt32(buf[k]) > 127) ||                                            //中文
                //(Convert.ToInt32(buf[k]) == 8))                                               //退格
                {
                    tmp += buf[k].ToString();

                }
            }
            if (tmp.Length != l)
            {
               // Util.info("请输入正确整数数字!");
                //Temp = tmp;
                return false;
            }
            else
                return true;

        }

posted on 2009-11-10 13:17 耍家 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/charmlang/archive/2009/11/10/1599795.html

<think>嗯,用户问的是如何在C#中实现字符串小写转换,特别是切换大小写,也就是把大写小写小写大写。我需要先回忆一下C#中的字符串处理方法。 首先,C#里每个字符都有ToUpper()ToLower()方法,可以将单个字符转换。但整个字符串的话,可能需要遍历每个字符,逐个判断然后转换。比如,如果是大写字母就转小写,否则保持原样或者转大写。不过这样可能需要自己写循环处理每个字符。 然后,有没有更简便的方法呢?比如使用内置的方法或者LINQ。比如,可以用LINQ的Select方法,对每个字符进行处理,然后组合成新的字符串。例如,string.Concat(input.Select(c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c)))。这可能是一个简洁的方式。 另外,用户提到“toggle case”,也就是切换大小写,可能需要处理每个字符的大小写反转。这时候需要注意一些特殊字符,比如数字或符号,它们可能不需要转换,但char.IsUpperToLower应该能处理这种情况,因为它们会检查是否是字母。 然后,可能需要考虑性能问题。如果字符串很长,使用LINQ会不会有效率问题?不过对于一般情况来说,LINQ足够用了,而且代码简洁。如果用户需要高性能,可能需要用循环或者StringBuilder来优化,但通常情况应该没问题。 还要注意,用户可能需要处理不同文化区域的大小写转换,比如使用CultureInfo.InvariantCulture来确保转换的一致性,特别是在不同的系统区域设置下。不过如果用户没有特别说明,可能默认使用当前文化设置,但最好在示例中提到这一点,或者提供一个使用InvariantCulture的例子。 另外,用户可能还想知道如何只转换首字母,或者其他的转换方式,比如全部转大写小写。但根据问题描述,用户主要关心的是切换大小写,所以应该集中在反转每个字符的大小写上。 最后,检查一下示例代码是否正确。比如,用LINQ的Select方法,每个字符检查是否是大写,如果是就转小写,否则转大写。然后使用string.Concat来组合成新的字符串。测试一下比如输入“Hello World!”应该变成“hELLO wORLD!”,这样代码是否正确。 总结步骤:遍历每个字符,判断大小写,转换,组合成新字符串。给出两种方法,一种是LINQ,另一种是循环处理。可能需要提到这两种方法的优缺点,比如LINQ简洁,循环可能更高效但代码稍长。 另外,考虑用户可能的后续问题,比如如何处理非字母字符,或者性能优化的方法,所以在相关问题里可以包括这些。</think>在C#中实现字符串小写切换可以通过字符遍历条件判断实现。以下是两种常用方法: ### 方法一:使用LINQchar方法 ```csharp string ToggleCase(string input) { return string.Concat(input.Select(c => char.IsUpper(c) ? char.ToLower(c) : char.ToUpper(c) )); } ``` ### 方法二:手动字符遍历 ```csharp string ToggleCase(string input) { char[] arr = input.ToCharArray(); for (int i = 0; i < arr.Length; i++) { if (char.IsUpper(arr[i])) arr[i] = char.ToLower(arr[i]); else arr[i] = char.ToUpper(arr[i]); } return new string(arr); } ``` 这两种方法都会将字符串中的大写字母转为小写小写字母转为大写。例如: - 输入:`"Hello World!"` - 输出:`"hELLO wORLD!"` 注意:使用`char.ToLower()``char.ToUpper()`时默认使用当前区域性规则,如果需要固定规则,可指定区域性参数: ```csharp char.ToLower(c, CultureInfo.InvariantCulture) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值