Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I want to make sure a string has only characters in this range

[a-z] && [A-Z] && [0-9] && [-]

so all letters and numbers plus the hyphen. I tried this...

C# App:

        char[] filteredChars = { ',', '!', '@', '#', '$', '%', '^', '&', '*', '(', ')', '_', '+', '=', '{', '}', '[', ']', ':', ';', '"', ''', '?', '/', '.', '<', '>', '\', '|' };
        string s = str.TrimStart(filteredChars);

This TrimStart() only seems to work with letters no otehr characters like $ % etc

Did I implement it wrong? Is there a better way to do it?

I just want to avoid looping through each string's index checking because there will be a lot of strings to do...

Thoughts?

Thanks!

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
208 views
Welcome To Ask or Share your Answers For Others

1 Answer

This seems like a perfectly valid reason to use a regular expression.

bool stringIsValid = Regex.IsMatch(inputString, @"^[a-zA-Z0-9-]*?$");

In response to miguel's comment, you could do this to remove all unwanted characters:

string cleanString = Regex.Replace(inputString, @"[^a-zA-Z0-9-]", "");

Note that the caret (^) is now placed inside the character class, thus negating it (matching any non-allowed character).


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...