我遇到需要从字符串中删除前缀的情况(如果存在)。
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")
能够正常工作,但它不会
答案 0 :(得分:5)
if str.StartsWith("sam")
str = str.Substring(3)
end if
不是单行,但很容易理解。
答案 1 :(得分:4)
str = New Regex("^sam").Replace(str, String.Empty)
正则表达式在字符串的开头查找sam
并将其替换为空,从而有效地从头开始删除sam
。
编辑根据Konrad的评论,共享方法调用会更好:
str = Regex.Replace(str, "^sam", String.Empty)