2016-04-18 3 views
0

Моя задача состоит в том, чтобы «усечение строки (первый аргумент), если он длиннее заданной максимальной длины строки (второй аргумент). Возвращает усеченную строку с ... конца.Обрезать строку JavaScript

Обратите внимание, что добавление трех точек в конец добавит к длине строки.

Однако, если заданная максимальная длина строки num меньше или равна 3, то добавление трех точек не добавляется к строке длина в определении усеченной строки. "

Я написал код:

function truncateString(str, num) { 
    if (num > str.length){ 
    str.slice(num); 
    return str.append("..."); 
    } 
    else if (num < 3) { 
    str.slice(3); 
    return str.append("..."); 
    } 
    else { 
    return "This is not a string"; 
    } 

} 

truncateString("A-tisket a-tasket A green and yellow basket", 11); 

Однако, это не делать то, что мне нужно делать, и возвращается «Это не строка» при каждом запуске. Может кто-нибудь мне помочь?

+2

ли '11' либо больше, чем длина вашей строки , или меньше, чем '3'? – Pointy

+0

11 является вторым аргументом в функции, если 'str.length

+0

Обратите внимание, что '>' означает «больше» и «<» означает «меньше». Тестирование 'str.length Pointy

ответ

1

И «Это не строка» - правильный ответ, почему это должно быть?

function truncateString(str, num) { 
    if (num > str.length){ // if num is greater than string length (in you case 11 is not greater than 43 
    str.slice(num); 
    return str.append("..."); 
    } 
    else if (num < 3) { // or if the num is less than 3 (11 is not less than 3) 
    str.slice(3); 
    return str.append("..."); 
    } 
    else { // do if no if was matched (and here we are) 
    return "This is not a string"; 
    } 

} 

Поэтому в основном то, что вам нужно, чтобы изменить > к < в первом if :)

Edit:

Конечный код вы хотите иметь это (str.append() не является функцией):

function truncateString(str, num) { 
    if (num < str.length){ 
    str.slice(num); 
    return str + "..."; 
    } 
    else if (num < 3) { 
    str.slice(3); 
    return str + "..."; 
    } 
    else { 
    return "This is not a string"; 
    } 

} 
+0

У меня было ощущение, что я не был слишком далеко от правильного ответа :) Что вы можете использовать внутри строковых функций? Например, '.split'' .splice' и' .join'? –

+0

'slip' является действительным, но два не являются - проверьте w3schools для ссылки на методы строки javascript http://www.w3schools.com/js/js_string_methods.asp – Adrian

1

как @ sh-ado-w сказано выше, вы должны измените свои условия, я думаю, что это делает то, что вы хотите.

function truncateString(str, num) { 
 
    if (num > str.length){ 
 
    return str; 
 
    } else{ 
 
    str = str.substring(0,num); 
 
    return str+"..."; 
 
    } 
 

 
} 
 

 
res = truncateString("A-tisket a-tasket A green and yellow basket", 11); 
 
alert(res)

4

Я предлагаю использовать вместо ..., потому что это один символ.

Затем

function truncate(str, max) { 
    return str.length > max ? str.substr(0, max-1) + '…' : str; 
} 

Примечание str.substr(0, -1) возвращает пустую строку.

0

Усечь строку (первый аргумент), если она больше заданной максимальной длины строки (второй аргумент). Верните усеченную строку с завершением.

function truncateString(str, num) { 
 
    if (str.length < num) return str; 
 
    var truncStr = str.slice(0, num); 
 
    var truncStrArr = truncStr.split(' '); 
 
    var truncStrArrLen=truncStrArr.length; 
 
    
 
    if(truncStrArrLen > 1 && 
 
    truncStrArr[truncStrArrLen - 1] !== str.split(' ')[truncStrArrLen - 1]) { 
 
    truncStrArr.pop(); 
 
    truncStr = truncStrArr.join(' '); 
 
    } 
 
    return str.length > num ? truncStr + '...' : truncStr; 
 
} 
 

 
console.log(truncateString("A-tisket a-tasket A green and yellow basket", 11));

0
/*This is very late ....but this works. It is all about the boolean comparisons:*/ 


if (str.length>num && num >3){return str.slice(0, (num -3)) +"...";} 

    else if (num>3 || str.length<num){ return str.slice(0,num);} 

    else if (str.length>num || num<3){return str.slice(0, num) +"...";} 

    } 
0

Здесь было мое решение:

function truncateString(str, num) { 
    if (str.length <= num) { 
    return str; 
    } else { 
    return str.slice(0, num > 3 ? num - 3 : num) + '...'; 
    } 
} 
0

его, как это работает

function truncateString(str, num) { 
    // Clear out that junk in your trunk 
     var st=''; 
    if(num>=str.length) 
    { 

     return str; 

    } 
else 
    if(num<str.length&&num>3) 
{st=str.slice(0,num-3); 
    return st+'...'; 
} 

else 
if(num<=3){ 
st = str.slice(0,num); 
return st+"..."; 
} 


} 

truncateString("A-", 1); 
Смежные вопросы