2012-01-04 17 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 STR = "hellllllは" O worlllld」 - 期待どおりに動作しない

ノー成功を収めて以下のことを行うことを試みた:

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

期待通りに動作しません例えば、 len = 15; str1 = 'home - did go' - 結果: 'home - did go' str2 = 'hom' e-home ' - 結果:' hom "e ' –

+2

「期待どおりに動作しない」とは、あなたは何を期待していますか、実際の出力は何ですか? – codeling

答えて

1

宣言:

var str = "helllll"o world";

は有効なjavascriptではありません。それを正しく実行するには、中間引用符をエスケープする必要があります。

試してみてください。

var str = "helllll\"o world";

または

var str = 'helllll"o world';

+0

これは単なる例ですが、私の実際のコードでは、strの値が変わる可能性があるため、strの値が分かりません。 –

+0

関数が呼び出されたときに:truncateText( "helllll \" o world "、10)、どの出力を期待していますか? – rsbarro

+0

は期待どおりに動作しません。例えば、len = 15; str1 = 'home - did go' - result : 'home - did go' str2 = 'hom "e - home' - 結果: 'hom" e' –

0

あなたは、私がこれを試み、それが働いた

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

あなたのjavascript関数でこれを試すことができます。

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

これは、関数以下

+0

しかし、私はquoetsを表示したい。 –

+0

okこれで、文字列return '"' + str.trim(len)を返す前に引用符を追加できます。replace( '"'、 '')+ '"'; – vkantiya

0

使用(「挟んなし)こんにちは、私の世界を提供します。あなたが望む通りに使用することができる。
私は、あまりにも

<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
をtruncateText()関数を変更

問題はjavascript関数ではありませんでしたが、返される文字列に対してサーバー側でhtmlデコードをしなければならないことが判明しました。

関連する問題