2012-01-04 4 views
1

Я использую нижеприведенный фрагмент, чтобы обрезать текст, и он работает нормально, за исключением случаев, когда текст содержит двойные кавычки.обрезать текст с двойными кавычками в javascript

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

, например: Len = 10 ул = "helllllllo worlllld" - работает нормально.

, но в случае, как это:

лена = 10 Str = "hellllll" о worlllld»- не работает, как ожидалось

Я попытался сделать следующее без успеха:

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

не работает как ожидалось s, например: len = 15; str1 = 'home - did go' - результат: 'home - did go' str2 = 'hom' e - home '- результат:' hom 'e' –

+2

что бы «это не сработало, как ожидалось» в точности означало - что вы ожидаете, каков фактический результат? – codeling

ответ

1

объявление:

var str = "helllll"o world";

недействителен javascript. Вам нужно избежать средней цитаты, чтобы она работала должным образом.

Try:

var str = "helllll\"o world";

или

var str = 'helllll"o world';

+0

это просто пример, в моем реальном коде я не знаю, что такое значение str, потому что это переменная, которая может измениться. –

+0

Когда функция вызывается с помощью: truncateText («helllll \» o world », 10), какой результат вы ожидаете? – rsbarro

+0

не работает, как ожидалось, например: len = 15; str1 = 'home - did go' - result : 'home - did go' str2 = 'hom' e - home '- result:' hom 'e' –

0

Вы можете попробовать это в яваскрипте функции

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

Я пытался для этого, и она работала.

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

Это дает мне Привет мир (без "между ними)

+0

, но я хочу отобразить квоты. –

+0

ok, тогда вы можете добавить кавычки перед возвратом строки return '"' + str.trim (len).заменить (' "', '') + '"'; – vkantiya

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-декодирование на стороне сервера до возвращающейся строки.

Смежные вопросы