【问题标题】:Convert string from lowercase to uppercase and removing special charaters from a string using C#使用 C# 将字符串从小写转换为大写并从字符串中删除特殊字符
【发布时间】:2011-05-01 18:13:40
【问题描述】:

我正在开发一个带有用户 ID 的登录表单。我希望用户以指定的格式创建用户 ID。我需要一种使用 C# 将所有小写字母转换为大写的方法。用户 ID 将采用以下格式。 格式为:

xyz\t4z4567(字符不区分大小写)

规则:

1.创建用户名时只允许使用特殊字符\。 2.UserID要转成大写.like (xyz --> XYZ) 我需要检查用户在创建用户 ID 时是否输入了任何特殊字符。如果 UserID 中有任何特殊字符,则该方法需要删除特殊字符,并将所有小写字母转换为大写字母。

最终结果应该是这样的:

xyz\t4z45@67 ---> XYZ\T4Z4567

我使用以下方法检查字符串是否包含以下字符,如果是,我将替换为空。

public string RemoveSpecialChars(string str)
{
   string[] chars = new string[] { ",", ".", "/", "!", "@", "#", "$", "%", "^", "&", "*", "'", ";", "-", "_", "(", ")", ":", "|", "[", "]" };

    for (int i = 0; i < chars.Length; i++)
    {
        if (str.Contains(chars[i]))
        {
            str = str.Replace(chars[i], "");
        }
    }

    return str;
}

【问题讨论】:

    标签: c# uppercase


    【解决方案1】:

    if ((c >= 'A' && c = '0' && c

    要摆脱 所有 特殊字符,您可以使用正则表达式或循环遍历字符串并将 'A-Z' 和 '/' 复制到新字符串中。这会过滤掉所有其他字符,而无需知道它们是什么。

    例如

            string invalid = @"as@bc3423*%*%ihh";
            string upper = invalid.ToUpper();
            string result = string.Empty;
    
            foreach (char c in upper)
            {
                if ((c >= 'A' && c <= 'Z') || (c >= '0' && c <= '9') || c == '\\')                    
                result += c;
            }
    
            Console.WriteLine(result);
    

    【讨论】:

      【解决方案2】:

      使用以下正则表达式替换:

      outputStr = System.Text.RegularExpressions.Regex.Replace(inputStr, @"[^a-zA-Z0-9_\\]", "").ToUpperInvariant();  
      

      输入:inputStr=@"xya\t4z567"
      输出:"XYA\T4Z567"

      【讨论】:

      • 是的,我更喜欢正则表达式而不是我的循环版本:-)
      • @Steve:使用正则表达式可以显着减少代码长度。非常有效和有用。但是,如果您的代码将被其他人使用和研究,请确保留下一些 cmets。当你想知道它们到底在做什么时,它们会让人头疼。
      • 嗨 kamyar..感谢您的解决方案。它工作正常。我在使用 thi 表达式时遇到了一个问题。我将输入输入为 MSI+_M)S@I!1#2&7)& 并将字符串返回为 MSI\_MSI127 。请纠正我在表达式中遗漏的地方。
      • @karthik 我认为您需要尝试理解 Kamyar 的正则表达式:-)。修复非常简单,只需从他的正则表达式中删除“_”即可。
      • @Steve:谢谢。有几分钟没在我的办公桌前。
      【解决方案3】:

      使用“你的字符串”.ToUpper() 并且您可以使用 "yourstring".Replace() 删除特殊字符。

      【讨论】:

      • string.Replace 很好,但是您需要知道要删除的所有字符,并且可能有很多(问题未指定),或者您可能没有甚至知道它们是什么。
      • 我做了同样的事情..但是当它有像'@'这样的特殊字符时,它不会将字符串转换为大写
      • ToUpper 方法确实将字符转换为大写,即使字符串中有特殊字符,请确保您了解 ToUpper 不会转换原始字符串,而是返回一个新字符串,其中字符转换为大写.
      猜你喜欢
      • 1970-01-01
      • 2014-07-12
      • 1970-01-01
      • 2021-06-11
      • 2019-11-09
      • 1970-01-01
      • 2017-03-24
      • 1970-01-01
      • 2014-12-13
      相关资源
      最近更新 更多