Преобразование строки из строчных в прописные и удаление специальных символов из строки с помощью C # - PullRequest
2 голосов
/ 28 октября 2010

Я разрабатываю форму входа с идентификатором пользователя. Я хочу, чтобы пользователь создал идентификатор пользователя в указанном формате. Мне нужен метод, использующий C # для преобразования всех строчных букв в прописные. Идентификатор пользователя будет в следующем формате. Формат:

xyz \ t4z4567 (символы не чувствительны к регистру)

Правила:

1. При создании имени пользователя допускается использование только специального символа \. 2. UserID должен быть преобразован в uppercase.like (xyz -> XYZ) Мне нужно проверить, вводит ли пользователь какие-либо специальные символы при создании идентификатора пользователя. Если в идентификаторе пользователя есть специальные символы, метод должен удалить специальные символы и преобразовать все строчные буквы в прописные.

наконец, результат должен быть следующим:

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;
}

Ответы [ 3 ]

7 голосов
/ 28 октября 2010

Используйте следующую замену Regex:

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

Ввод: inputStr=@"xya\t4z567"
вывод: "XYA\T4Z567"

2 голосов
/ 28 октября 2010

Используйте "yourstring" .ToUpper () и вы можете использовать "yourstring" .Replace () для удаления специальных символов.

0 голосов
/ 28 октября 2010

if ((c> = 'A' && c <= 'Z') || (c> = '0' && c <= '9') || c == '\') Во-первых, строка.ToUpper () получает ваши символы в верхнем регистре. </p>

Чтобы избавиться от всех специальных символов, вы должны использовать регулярное выражение или цикл по строке и скопировать 'AZ' и '/' вновая строка.Это отфильтровывает всех других персонажей, без необходимости знать, что они из себя представляют.

Например,

        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);
...