2

我有一种情况,我需要从字符串中删除前缀(如果存在)。

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','')

杰出的!现在:

示例 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")工作,但它没有

4

2 回答 2

5
if str.StartsWith("sam")
    str = str.Substring(3)
end if

不是单行的,但很容易理解。

于 2013-09-03T17:19:01.280 回答
4
str = New Regex("^sam").Replace(str, String.Empty)

正则表达式sam在字符串的开头查找并将其替换为空,有效地sam从开头删除。

编辑根据 Konrad 的评论,共享方法调用会更好:

str = Regex.Replace(str, "^sam", String.Empty)
于 2013-09-03T17:22:07.653 回答