我想从文本框中删除一些字符。它工作,但当我尝试替换“[”字符时,它会给出错误。为什么?
#
当我删除+
部分时效果很好吗?
Return Regex.Replace(html, "[", "").Replace(",", " ").Replace("]", "").Replace(Chr(34), " ")
答案 0 :(得分:2)
问题在于,由于[
字符在正则表达式中具有特殊含义,因此必须对其进行转义才能将其用作正则表达式序列的一部分,因此要逃避它,您只需添加一个角色前的\
。
因此,这将是您正确的正则表达式代码Return Regex.Replace(html, "\[", "").Replace(",", " ").Replace("]", "").Replace(Chr(34), " ")
答案 1 :(得分:1)
因为[
是正则表达式模式使用的保留字符。您应该始终使用Regex.Escape()
转义搜索模式。这将找到所有保留字符并用反斜杠转义它们。
Dim searchPattern = Regex.Escape("[")
Return Regex.Replace(html, searchPattern, ""). 'etc...
但是为什么你还需要使用正则表达式呢?我认为,使用StringBuilder
:
Dim sb = New StringBuilder(html) _
.Replace("[", "") _
.Replace(",", " ") _
.Replace("]", "") _
.Replace(Chr(34), " ")
Return sb.ToString()