Удаление 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)
Другие вопросы по тегам