2011-09-18 14 views
83

¿Cómo puedo, utilizando Javascript, hacer una función que recortará cadena pasado como argumento, a una longitud especificada, también pasado como argumento. Por ejemplo:Javascript recortar una cadena a la longitud

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

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

¿Alguien tiene ideas? He oído algo sobre el uso de subcadenas, pero no entendí del todo.

+0

"this is" = 7 caracteres, ¿tenía la intención de hacerlo? –

+0

Como dije en la pregunta, no estoy muy seguro de cómo usar la subcadena para hacer esto. ¿Podría darme un ejemplo? Acepto, es una respuesta, por supuesto, si funciona;) @Interstellar_Coder ¡Uy, error! –

Respuesta

192

¿Por qué no usar subcadena ... string.substring(0, 7); El primer argumento (0) es el punto de partida. El segundo argumento (7) es el punto final (exclusivo). More info here.

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

Gracias! Funciona perfectamente. ¡Lo marcaré como respuesta tan pronto como pase el límite de tiempo! –

+13

Y si quiere puntos suspensivos para cadenas que excedan la longitud máxima (probablemente más útil para max más largo): var string = "this is a string"; var longitud = 20; var trimmedString = string.length> length? string.substring (0, length - 3) + "...": string.substring (0, longitud); – Will

+2

Tenga en cuenta que string.substr (start, length) se comporta de manera extraña, se volverá vacío si la longitud es mayor que la longitud de la cadena. string.substring (inicio, fin) funciona como se esperaba, es decir, devolverá la cadena hasta su final si no hay suficientes caracteres para el final dado. – centic

21

copia Will's comentario en una respuesta, porque he encontrado útil:

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

Gracias Will.

Y un jsFiddle para cualquier persona que se preocupa https://jsfiddle.net/t354gw7e/ :)

+0

No tiene sentido usar 'string.substring (0, length)' en el caso else, ya que la cadena se garantiza que sea <= 20 caracteres en ese punto, simplemente use 'string' . –

+0

Saludos, se actualizó la respuesta –

6

por qué no utilizar una extensión?

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

Y usarlo como:

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

Caution:

Debido a que estamos sobrescribiendo prototipo de un objeto estándar .trim(). Esto puede causar un comportamiento inesperado en otras bibliotecas y herramientas que puede usar.

+1

¿Por qué no? Porque está sobrescribiendo el prototipo de un objeto estándar '.trim()'. Esto puede causar un comportamiento inesperado en otras bibliotecas y herramientas que puede usar. –

+0

@OlegBerman Claro, señaló su comentario. – xameeramir

Cuestiones relacionadas