在javascript中用双引号截断文本

truncate text with double quotes in javascript

本文关键字:文本 javascript      更新时间:2023-09-26

我正在使用下面的代码片段来截断文本,它运行良好,除非文本包含双引号。

function truncateText(str, len) {
return (str.length > len ? $.trim(str).substring(0, len).split(" ").slice(0,-1).join("") :str);   
}

例如:len=10str="helllllllo wolllld"-工作正常。

但在这种情况下:

len=10str="hellllll"o wolllld"-未按预期工作。

我尝试过做以下事情,但没有成功:

str = str.replace('"', ''"');
 str = str.replace('"', '&quot');
 str = str.replace('"', ''x22');

声明:

var str = "helllll"o world";

不是有效的javascript。你需要转义中间的引号,它才能正常运行。

尝试:

var str = "helllll'"o world";

var str = 'helllll"o world';

使用以下函数。你可以随心所欲地使用它
我也更改了truncateText()函数,

 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js " type="text/javascript"></script>
<script>
    function truncateText(str, len) {
        return (str.length > len ? $.trim(str).substring(0, len) : str);
    }    
    var mystr = "helllllll'"o wor'"lllld";
    mystr = mystr.replace(/'"/g, '');         
    alert(truncateText(mystr,10)); 
</script>

您可以在javascript函数中尝试

return '"'+str.trim(len).replace('"','')+'"';  

我试过了,结果成功了。

<input type=button onclick='truncateText("Hello'" world",10)'/>

这给了我Hello世界(没有"中间")

问题不在javascript函数中,但事实证明,我必须在服务器端对返回的字符串进行html解码。