2012-01-04 50 views
1

我正在使用下面的代碼段截斷文本,並且它工作正常,除非文本包含雙引號。在javascript中使用雙引號截斷文本

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

例如: LEN = 10 STR = 「helllllllo worlllld」 - 工作的罰款。

但如果是這樣的:

LEN = 10 海峽= 「hellllll」 澳worlllld」 - 工作不正常

我曾嘗試沒有成功做到如下:

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

不按預期工作意味着s例如: len = 15; str1 ='home - did go' - result:'home - did go' str2 ='hom「e - home' - result:'hom'e' – 2012-01-04 07:37:45

+2

」它不按預期工作「你期待什麼,實際產出是多少? – codeling 2012-01-04 07:38:21

回答

1

聲明:

var str = "helllll"o world";

無效的javascript。你需要逃避中間引用才能正常運行。

嘗試:

var str = "helllll\"o world";

var str = 'helllll"o world';

+0

這只是一個例子,在我的真實代碼中,我不知道str的值是什麼,因爲它是可變的。 – 2012-01-04 07:35:04

+0

當函數被調用時:truncateText(「helllll \」o world「,10),你期望輸出什麼? – rsbarro 2012-01-04 07:37:51

+0

不按預期工作意味着例如:len = 15; str1 ='home - did go' - 結果:'home - did go'str2 ='hom「e - home' - result:'hom'e' – 2012-01-04 07:42:59

0

你可以在你的JavaScript功能

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

試試這個我想這和它的工作。

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

這給了我世界,你好(不包括「插圖中)

+0

但我想顯示quoets。 – 2012-01-04 07:44:36

+0

好的,然後你可以在返回字符串返回'''+ str.trim(len)之前添加引號。取代( 「 '', '')+ '」'; – vkantiya 2012-01-04 08:15:43

0

以下功能使用。只要你想它可能會被使用。
我改變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> 
0

問題不在於javascript函數,但事實證明我必須在服務器端對返回的字符串進行html解碼。