2011-09-18 14 views
83

Jak mogę, za pomocą JavaScript, zrobić funkcję, która przycina ciąg przekazany jako argument, do określonej długości, również przekazany jako argument. Na przykład:JavaScript przyciąć ciąg na długość

var string = "this is a string"; 
var length = 6; 
var trimmedString = trimFunction(length, string); 

/* trimmedString should be: 
    "this is" */ 

Ktoś ma pomysły? Słyszałem coś o użyciu podciągu, ale nie do końca rozumiałem.

+0

"To jest" = 7 znaków, czy masz zamiar to zrobić? –

+0

Jak wspomniano w pytaniu, nie jestem zbyt pewny, jak użyć podciągu, aby to zrobić. Czy mógłbyś podać mi przykład? Przyjmuję to oczywiście odpowiedź, jeśli to działa;) @Interstellar_Coder oops, literówka! –

Odpowiedz

192

Dlaczego nie wystarczy użyć podłańcucha ... string.substring(0, 7); Pierwszy argument (0) jest punktem początkowym. Drugi argument (7) jest punktem końcowym (wyłącznym). More info here.

var string = "this is a string"; 
var length = 7; 
var trimmedString = string.substring(0, length); 
+0

Dzięki! Działa świetnie. Oznaczę to jako odpowiedź, gdy tylko minie termin! –

+13

A jeśli chcesz elipsy dla ciągów przekraczających maksymalną długość (prawdopodobnie bardziej przydatne dla dłuższych max): var string = "to jest ciąg"; var length = 20; var trimmedString = string.length> length? string.substring (0, length - 3) + "...": string.substring (0, długość); – Will

+2

Należy zauważyć, że string.substr (start, length) zachowuje się dziwnie, zwróci puste, jeśli długość jest większa niż długość napisu. string.substring (start, end) działa zgodnie z oczekiwaniami, tzn. zwróci łańcuch aż do jego końca, jeśli nie ma wystarczającej liczby znaków dla danego końca! – centic

21

Kopiowanie Will's komentarz na odpowiedź, bo okazało się przydatne:

var string = "this is a string"; 
var length = 20; 
var trimmedString = string.length > length ? 
        string.substring(0, length - 3) + "..." : 
        string; 

Dzięki Will.

I jsfiddle dla każdego, kto dba https://jsfiddle.net/t354gw7e/ :)

+0

Nie ma sensu używanie 'string.substring (0, length)' w innym przypadku, ponieważ ciąg znaków jest gwarantowany <= 20 znaków w tym punkcie, po prostu użyj 'string' . –

+0

Pozdrawiam, zaktualizowałem odpowiedź –

6

Dlaczego nie używać rozszerzenia?

String.prototype.trim = function (length) { 
    return this.length > length ? this.substring(0, length) + "..." : this; 
} 

i używać go lubię:

var stringObject= 'this is a verrrryyyyyyyyyyyyyyyyyyyyyyyyyyyyylllooooooooooooonggggggggggggsssssssssssssttttttttttrrrrrrrrriiiiiiiiiiinnnnnnnnnnnnggggggggg'; 
stringObject.trim(25) 

Caution:

ponieważ jesteśmy nadpisywania prototyp standardowego obiektu .trim(). Może to spowodować nieoczekiwane zachowanie w innych bibliotekach i narzędziach, z których możesz korzystać.

+1

Dlaczego nie? Ponieważ nadpisujesz prototyp standardowego obiektu '.trim()'. Może to spowodować nieoczekiwane zachowanie w innych bibliotekach i narzędziach, z których możesz korzystać. –

+0

@OlegBerman Pewnie, zanotował swój komentarz. – xameeramir

Powiązane problemy