Often we find the C# Trim()
method has limitations. It can handle groups of characters, but these must be specified explicitly.
A requirement is to remove punctuation from the starts and ends of strings. With a custom method we avoid the complexity of Trim
.
We introduce TrimPunctuation
, which has 2 loops. Each loop uses char.IsPunctuation
. When a non-punctuation character is encountered, they stop iterating, with the break
keyword.
for
-loop counts the number of punctuation characters at the start of the string
.for
-loop counts the punctuation at the end. It iterates in the reverse order.string
. If all characters were punctuation, it returns an empty string
.using System; class Program { static void Main() { string[] array = { "Do you like this site?", "--cool--", "...ok!", "None", "" }; // Call method on each string. foreach (string value in array) { Console.WriteLine(Program.TrimPunctuation(value)); } } /// <summary> /// TrimPunctuation from start and end of string. /// </summary> static string TrimPunctuation(string value) { // Count start punctuation. int removeFromStart = 0; for (int i = 0; i < value.Length; i++) { if (char.IsPunctuation(value[i])) { removeFromStart++; } else { break; } } // Count end punctuation. int removeFromEnd = 0; for (int i = value.Length - 1; i >= 0; i--) { if (char.IsPunctuation(value[i])) { removeFromEnd++; } else { break; } } // No characters were punctuation. if (removeFromStart == 0 && removeFromEnd == 0) { return value; } // All characters were punctuation. if (removeFromStart == value.Length && removeFromEnd == value.Length) { return ""; } // Substring. return value.Substring(removeFromStart, value.Length - removeFromEnd - removeFromStart); } }Do you like this site cool ok None
Regex
The string
manipulation here could be done with Regex
. And the code would even be shorter. It would also be slower. This is not a big consideration for some programs.
This method could be useful for handling the forms at the back-end of a website. It could help with handling invalid fields in a database.
We developed a simple looping method that strips leading and trailing punctuation from a string
. A Regex
could be used, but it would be comparatively more complex.