2015-06-11 83 views
1

我有如下一些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.. & "" 

我该如何避免这种情况。

+0

[请看看这个。(http://www.tutorialspoint.com/vb.net/vb.net_character_escapes.htm)以及[这里](http://stackoverflow.com/questions/7726420/如何对转义双引号,在作为一种参数对的,NUnit的-测试用例)。 – aspiring

回答

0
的变量

使用HTML编码字符串,例如一个空间转换为%20:

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

而且你可能要包括一些之前的字符串解码恢复正常脚本实际上追加到WorldNews

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

谢谢,但现在的问题是不是空白的,但性格“ – user3491987

+0

你们的空间就是一个例子......但这一切符号 –

+0

的Uri.EscapeDataString()不能编码” – user3491987

0

可以更换'/" CHARAC分别与&apos;,&#47;&quot;,生成的HTML应该知道这些是什么。

像这样的东西你要替换的每个字符,只是使用它的ASCII HTML字符代码: commentsth = commentsth.Replace("'", "&apos;")

Link to ASCII Codes

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