函数适用于双引号,但不适用于单引号

Posted

技术标签:

【中文标题】函数适用于双引号,但不适用于单引号【英文标题】:Function works with double quotes but not with single quotes 【发布时间】:2020-05-10 13:35:34 【问题描述】:

我正在使用 webforms 开发一个页面,但我的 aspx.cs 页面有问题。我有一个带有值的树视图,它应该用作 gridview(sqlServer 数据库)的过滤器。我将检查的节点保存在一个字符串中,并且代码可以在双引号中正常工作,但是当我使用单引号(我需要)时,运行它时没有任何反应。

这是我正在运行的代码。我使用 ClientScript 只是为了查看我保存的字符串。下面的代码不起作用,如果我用“替换',它可以工作,但我不能用它来过滤sql表。我试过替换,尝试使用字符中断,放两个单引号,似乎没有任何效果。任何想法?

protected void Submit(object sender, EventArgs e)
        
            string exp1 = string.Empty;
            foreach (TreeNode node in Source_TreeView.CheckedNodes)
            
                if (node.Checked)
                
                    if (exp1 != string.Empty)
                    
                        exp1 += " OR ";
                    
                    exp1 += "Source=" + "'" + node.Value + "'";
                
            
            if (exp1 != string.Empty)
            
                exp1 = "(" + exp1;
                exp1 = exp1 + ")";
            
            exp1 = exp1.Replace("'", "''");
            string exp2 = string.Empty;
            foreach (TreeNode node in Sink_TreeView.CheckedNodes)
            
                if (node.Checked)
                
                    if (exp2 != string.Empty)
                    
                        exp2 += " OR ";
                    
                    exp2 += "Sink=" + "'" + node.Value + "'"; 
                
            
            if (exp2 != string.Empty)
            
                exp2 = "(" + exp2;
                exp2 = exp2 + ")";
            
           ClientScript.RegisterStartupScript(this.GetType(), "alert", "alert('" + exp1 + exp2 + "');", true);
        

【问题讨论】:

exp1 = exp1.Replace("'", "''"); 为什么需要这行代码? 这只是我绝望的尝试之一。我尝试使用双引号,然后用单引号替换它,但没有奏效。在这里,我只是尝试使用两个单引号。 it didn't work 是什么意思? 【参考方案1】:

它不起作用,因为您的字符串 exp1 或 exp2 之一包含一个简单的引号。因此,当您使用 RegisterStartupScript 发送脚本时,您可能会遇到 javascript 错误。检查控制台

尝试使用 \"

string yourScript  = string.format("alert(\"0 1\");", exp1, exp2)
ClientScript.RegisterStartupScript(this.GetType(), "alert", yourScript, true);

【讨论】:

以上是关于函数适用于双引号,但不适用于单引号的主要内容,如果未能解决你的问题,请参考以下文章

在 VSCode 中,如何在 python 文件上应用单引号,而不仅仅是打字稿,更漂亮?

PHP:准备好的语句无法从单引号中逃脱

hsqldb单引号字符

python中单引号双引号和三引号的区别

shell脚本中单引号和双引号的区别

shell中单引号双引号反斜杠简说