Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check string for invalid characters? Smartest way?

Tags:

c#

.net

list

char

I would like to check some string for invalid characters. With invalid characters I mean characters that should not be there. What characters are these? This is different, but I think thats not that importan, important is how should I do that and what is the easiest and best way (performance) to do that?

Let say I just want strings that contains 'A-Z', 'empty', '.', '$', '0-9'

So if i have a string like "HELLO STaCKOVERFLOW" => invalid, because of the 'a'. Ok now how to do that? I could make a List<char> and put every char in it that is not allowed and check the string with this list. Maybe not a good idea, because there a lot of chars then. But I could make a list that contains all of the allowed chars right? And then? For every char in the string I have to compare the List<char>? Any smart code for this? And another question: if I would add A-Z to the List<char> I have to add 25 chars manually, but these chars are as I know 65-90 in the ASCII Table, can I add them easier? Any suggestions? Thank you

like image 873
silla Avatar asked Sep 10 '12 11:09

silla


People also ask

How do you check if a string has any characters?

Use the String. includes() method to check if a string contains a character, e.g. if (str. includes(char)) {} . The include() method will return true if the string contains the provided character, otherwise false is returned.

How do you check if a string contains any special character in C#?

Use it inside for loop and check or the string that has special characters. str. ToCharArray(); With that, use a for loop and to check for each character using the isLetterOrDigit() method.

How do you escape a string in C#?

"; C# includes escaping character \ (backslash) before these special characters to include in a string. Use backslash \ before double quotes and some special characters such as \,\n,\r,\t, etc. to include it in a string.


1 Answers

You can use a regular expression for this:

Regex r = new Regex("[^A-Z0-9.$ ]$");
if (r.IsMatch(SomeString)) {
    // validation failed
}

To create a list of characters from A-Z or 0-9 you would use a simple loop:

for (char c = 'A'; c <= 'Z'; c++) {
    // c or c.ToString() depending on what you need
}

But you don't need that with the Regex - pretty much every regex engine understands the range syntax (A-Z).

like image 100
ThiefMaster Avatar answered Sep 24 '22 10:09

ThiefMaster