I want to remove all special characters from a string. Allowed characters are A-Z (uppercase or lowercase), numbers (0-9), underscore (_), white space ( ), pecentage(%) or the dot sign (.).
I have tried this:
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if ((c >= '0' && c <= '9') || (c >= 'A' && c <= 'Z') || (c >= 'a' && c <= 'z') | c == '.' || c == '_' || c == ' ' || c == '%')
{ sb.Append(c); }
}
return sb.ToString();
And this:
Regex r = new Regex("(?:[^a-z0-9% ]|(?<=['\"])s)", RegexOptions.IgnoreCase | RegexOptions.CultureInvariant | RegexOptions.Compiled);
return r.Replace(input, String.Empty);
But nothing seems to be working. Any help will be appreciated.
Thank you!
Regex.Replace(input, "[^a-zA-Z0-9% ._]", string.Empty)
You can simplify the first method to
StringBuilder sb = new StringBuilder();
foreach (char c in input)
{
if (Char.IsLetterOrDigit(c) || c == '.' || c == '_' || c == ' ' || c == '%')
{ sb.Append(c); }
}
return sb.ToString();
which seems to pass simple tests. You can shorten it using LINQ
return new string(
input.Where(
c => Char.IsLetterOrDigit(c) ||
c == '.' || c == '_' || c == ' ' || c == '%')
.ToArray());
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