Vb.net - Regex to create url



我正在尝试从API接收的titles生成干净的URL。我已经用regex创建了一个函数来实现这一点。我目前的函数适用于大多数情况,但我有一个标题的问题,并且返回值的末尾有一个额外的-,这会导致我的URL出现问题。例如,在我的标题"Hospital Services in Washington"和当前regex函数中,当我希望返回时末尾不带-并返回hospital-services时,我的返回将是hospital-services-。我目前正纠结于需要做出什么样的改变才能获得我想要的结果。大多数其他标题的回归都很好,但对上面的例子有所期待。

工作标题示例:Cedars Sinai Medical Center转换为cedar-sinai-medical-center

当试图从文本中删除in Washington或从其留下的-的标题中删除任何州名称时,我的问题似乎出现了

以下是我的代码片段:

Private Function GenerateReportsFriendlyURL(ByVal url As String)
Dim cleanURL As String = Regex.Replace(url, "^A-Za-z0-9-/s]", "")
cleanURL = cleanURL.Replace(",", "")
cleanURL = cleanURL.Replace("'", "")
cleanURL = cleanURL.Replace(" and ", " ")
cleanURL = cleanURL.Replace("’", "%E2%80%99")
cleanURL = RetrieveNameOnly(cleanURL)
Dim builder As New StringBuilder(cleanURL.Replace(" &", ""))
Return builder.Replace(" ", "-").ToString().Insert(builder.Length - 0, "").ToLower()
End Function

我不知道你想用"将构建器变成字符串,然后通过在字符串的末尾插入零长度字符串来创建新的字符串";其中一部分:

Dim builder As New StringBuilder(cleanURL.Replace(" &", ""))
Return builder.Replace(" ", "-").ToString().Insert(builder.Length - 0, "").ToLower()

但从你说的问题来看,你的字段包含尾随的-,你可能应该做:

cleanURL = RetrieveNameOnly(cleanURL)
Return cleanURL.Replace(" &", "").Trim().ToLower().Replace(" ", "-")

最新更新