My project has the need to build consistent urls similar to the ones here on stackoverflow. I know how I “can” do it by running the string through multiple filters, but I’m wondering if I can do it all with a single method.
Basically I want to remove all special characters, and replace them with dashes BUT if there are multiple dashes in a row, I need them to be a single dash. How can I implement this as clean as possible?
Example: If I were to use the following string.
My #1 Event
My regex would create the following string
my–1-event
notice how there are two dashes (one for the space and one for the “#” symbol). What I need is
my-1-event
Here’s how I’m implementing it currently
''# <System.Runtime.CompilerServices.Extension()>
Public Function ToUrlFriendlyString(ByVal input As String) As String
Dim reg As New Regex("[^A-Za-z0-9]")
''# I could run a loop filter here to match "--" and replace it with "-"
''# but that seems like more overhead than necessary.
Return (reg.Replace(Trim(input), "-"))
End Function
And then all I do is call the extension method
Dim UrlFriendlyString = MyTile.ToUrlFriendlyString
Thanks in advance.
Add a
+to the end of the regex.This will tell it to match one or more characters that match the character class that precedes the
+.Also, you should create your
Regexinstance in aSharedfield outside the method so that .Net won’t need to parse the regex again every time you call the method.[edited by rockinthesixstring]: here’s the final result