Vb. net - Регулярное выражение для создания URL - PullRequest
0 голосов
/ 05 августа 2020

Я пытаюсь создать чистые URL-адреса из titles, получаемого от API. Для этого я создал функцию с регулярным выражением. Моя текущая функция работает для большинства, но у меня проблемы с одним заголовком, а возвращаемое значение имеет дополнительный - в конце, что создает проблемы с моими URL-адресами. Например, в моем заголовке "Hospital Services in Washington" с текущей функцией регулярного выражения мое возвращение будет 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

1 Ответ

0 голосов
/ 05 августа 2020

Понятия не имею, чего вы пытаетесь достичь sh с помощью части "превращения построителя в строку, а затем создания новой строки, вставив строку нулевой длины после конца строки":

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(" ", "-")
...