Удаление 3 конкретных символов, если они присутствуют в начале строки VB.net
У меня есть ситуация, когда мне нужно удалить префикс из строки, если она существует.
Dim str As String = "samVariable"
Необходимо преобразовать в Variable
Легко, с TrimStart
str = str.trimstart("s"c, "a"c, "m"c)
Кроме...
Строка не всегда может начинаться с "sam"
Пример:
Dim str As String = "saleDetails"
Теперь это станет aleDetails
Что не так, так как насчет Replace
str = str.Replace('sam','')
Brilliant! Сейчас:
Пример 1:
Dim str As String = "samVariable"
str = str.Replace('sam','')
str = "Variable"
Пример 2:
Dim str As String = "saleDetails"
str = str.Replace('sam','')
str = "saleDetails" (unaffected)
НО....
Что, если:
Dim str As String = "Resample"
str = str.Replace('sam','')
str = "Reple"
Это снова не так!
Итак, мой вопрос:
Как удалить "sam" только из начала строки?
Я ожидал TrimStart("sam")
работать, но это не так
2 ответа
Решение
if str.StartsWith("sam")
str = str.Substring(3)
end if
Не однострочно, но легко следовать.
str = New Regex("^sam").Replace(str, String.Empty)
Регулярное выражение ищет sam
в начале строки и заменяет ее пустым, эффективно удаляя sam
с начала.
РЕДАКТИРОВАТЬ В соответствии с комментарием Конрада, общий метод вызова будет лучше:
str = Regex.Replace(str, "^sam", String.Empty)