2016-04-18 12 views
0

Meine Aufgabe ist es, eine Zeichenfolge (erstes Argument) auf „gestutzt, wenn es länger als die vorgegebene maximale Stringlänge (zweites Argument) ist. Bringen Sie den abgeschnittenen String mit einem ... endet.Kürzt einen String JavaScript

Beachten Sie, dass das Einfügen der drei Punkte zum Ende die String-Länge hinzufügt.

Wenn jedoch die angegebene maximale Stringlänge num kleiner oder gleich 3 ist, wird die Addition der drei Punkte nicht zum String hinzugefügt Länge bei der Bestimmung der abgeschnittenen Zeichenfolge. "

ich den Code geschrieben haben:

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); 

Allerdings ist es nicht zu tun, was ich tun müssen, und gibt „Dies ist kein String“ auf jedem Lauf. Kann mir jemand helfen?

+2

Ist '11' entweder größer ist als die Länge der Zeichenfolge oder weniger als "3"? – Pointy

+0

11 ist das zweite Argument in der Funktion, wenn 'str.length

+0

Beachten Sie, dass '>' bedeutet "größer als" und '<' bedeutet "kleiner als". Das Testen von 'str.length Pointy

Antwort

1

Und "Das ist keine Zeichenfolge" ist die richtige Antwort, warum sollte es sein?

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"; 
    } 

} 

Also im Grunde, was Sie brauchen, ist >-< in Ihrem ersten if :)

bearbeiten zu ändern:

Der endgültige Code, den Sie haben wollen, ist (str.append() keine Funktion):

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

Ich hatte das Gefühl, dass ich nicht zu weit weg war, die richtige Antwort zu haben :) Was können Sie dann in String-Funktionen verwenden? Wie 'split'' splice' und '.join'? –

+0

"slip" ist gültig, aber die beiden sind nicht - w3schools als Referenz auf Javascript String-Methoden http://www.w3schools.com/js/js_string_methods.asp überprüfen – Adrian

1

als @ sh-ado-w sagte oben, sollten Sie Ändere deine Bedingungen, ich denke das macht was du willst.

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

schlage ich statt ... verwenden, weil es sich um ein einzelnes Zeichen ist.

Dann

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

Hinweis str.substr(0, -1) kehrt die leere Zeichenkette.

0

Eine Zeichenkette (erstes Argument) abschneiden, wenn sie länger ist als die angegebene maximale Zeichenkettenlänge (zweites Argument). Geben Sie die abgeschnittene Zeichenfolge mit einem ... ending zurück.

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

war hier meine Lösung:

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

sein, wie es funktioniert

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);