Hello I'm try to remove special characters from user inputs.
        public void fd()
        {
            string output = "";
            string input = Console.ReadLine();
            char[] charArray = input.ToCharArray();
            foreach (var item in charArray)
            {
                if (!Char.IsLetterOrDigit(item))
                {
                   \\\CODE HERE                    }
            }
            output = new string(trimmedChars);
            Console.WriteLine(output);
        }
At the end I'm turning it back to a string. My code only removes one special character in the string. Does anyone have any suggestions on a easier way instead
You can use this regex /^[ A-Za-z0-9_@./#&+-]*$/.
The usual context of wildcard characters is in globbing similar names in a list of files, whereas regexes are usually employed in applications that pattern-match text strings in general. For example, the regex ^[ \t]+|[ \t]+$ matches excess whitespace at the beginning or end of a line.
The backslash character ( \ ) is the escaping character. It can be used to denote an escaped character, a string, literal, or one of the set of supported special characters. Use a double backslash ( \\ ) to denote an escaped string literal.
The special characters are: a. ., *, [, and \ (period, asterisk, left square bracket, and backslash, respectively), which are always special, except when they appear within square brackets ([]; see 1.4 below). c. $ (dollar sign), which is special at the end of an entire RE (see 4.2 below).
You have a nice implementation, just consider using next code, which is only a bit shorter, but has a little bit higher abstractions
var input =  " th@ere's! ";
Func<char, bool> isSpecialChar = ch => !char.IsLetter(ch) && !char.IsDigit(ch);
for (int i = 1; i < input.Length - 1; i++)
{
    //if current character is a special symbol
    if(isSpecialChar(input[i])) 
    {
        //if previous or next character are special symbols
        if(isSpecialChar(input[i-1]) || isSpecialChar(input[i+1]))
        {
            //remove that character
            input = input.Remove(i, 1);
            //decrease counter, since we removed one char
            i--;
        }
    }
}
Console.WriteLine(input); //prints " th@ere's "
A new string would be created each time you would call Remove. Use a StringBuilder for a more memory-performant solution.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With