字符串包含'需要避免

时间:2015-06-11 06:45:50

标签: asp.net vb.net

我有一些vb代码如下:

Dim sb As System.Text.StringBuilder = New System.Text.StringBuilder()
    sb.Append("<script type=""text/javascript"">")
    sb.Append(" function addRow() {")
    sb.Append(" var div = document.createElement('div');")
    sb.Append(" div.className = 'panel panel-info';")
    sb.Append(" div.innerHTML = '")

    For i = 0 To dtf.Rows.Count - 1
        Dim NAME As String = dtf.Rows(i)(0).ToString
        Dim Datee As String = dtf.Rows(i)(3).ToString
        Dim commentsth As String = dtf.Rows(i)(2).ToString
        Dim urlh As String = dtf.Rows(i)(1).ToString
        sb.Append("<div class=""panel-heading"">")
        sb.Append(" <h4 class=""panel-title"">")
        sb.Append(" <a data-toggle=""collapse"" data-parent=""#accordion"" href=""" & urlh & """>")
        sb.Append(" " & NAME & "  " & Datee & "</a>")
        sb.Append(" </h4>")
        sb.Append(" </div>")
        sb.Append(" <div id=""collapse" & i & """ class=""panel-collapse collapse in"">")
        sb.Append(" <div class=""panel-body"">")
        sb.Append(" " & commentsth & "")
        sb.Append(" </div>")
        sb.Append(" </div>")
    Next
    sb.Append("';")
    sb.Append(" document.getElementById('WorldNews').appendChild(div);}")
    sb.Append("</script>")
    ClientScript.RegisterClientScriptBlock(Me.GetType(), "MyScript", sb.ToString())

此代码用于将java脚本代码附加到网页。

我的问题是,例如变量

commentsth 

包含字符

' or " or \  

它会影响输出,因为'或'可能是字符串的结束标记

即:如果commentsth =“他是......”那么问题就会发生..

    " '<div class=""panel-body"">" & he's.. & ""

我该如何避免这种情况。

3 个答案:

答案 0 :(得分:0)

对变量使用HTML编码字符串,例如将空格转换为%20:

 sb.Append(" " & Uri.EscapeDataString(commentsth) & "")

同样在脚本中,您可能希望包含一些内容,以便在将字符串实际附加到WorldNews之前将其解码回正常:

sb.Append(" div.innerHTML = decodeURI('")
...
sb.Append("');")

答案 1 :(得分:0)

您可以分别用'/"替换&apos;&#47;&quot;字符,生成的HTML应该是知道那些是什么。

对于您要替换的每个字符都是这样的,只需使用它的ASCII HTML字符代码: commentsth = commentsth.Replace("'", "&apos;")

Link to ASCII Codes

答案 2 :(得分:0)

创建一个替换不需要的字符的函数,并将其添加到代码中,如下所示:

...
sb.Append(" <div class=""panel-body"">")
sb.Append(" " & ReplaceSpecials(commentsth) & "")
sb.Append(" </div>")
...

示例:

Function ReplaceSpecials(ByVal Text As String) As String
    Return Text.Replace("'", "").Replace("\", "")
End Function