¿Alguien tiene una solución / biblioteca más sofisticada para truncar cadenas con JavaScript y poner puntos suspensivos al final, que la obvia:
if (string.length > 25) {
string = string.substring(0, 24) + "...";
}
javascript
string
truncation
naltatis
fuente
fuente
Respuestas:
Básicamente, verifica la longitud de la cadena dada. Si es más largo que una longitud determinada
n
, córtelo a la longitudn
(substr
oslice
) y agregue la entidad html…
(...) a la cadena recortada.Tal método parece
Si por 'más sofisticado' te refieres a truncar en el límite de la última palabra de una cadena, entonces necesitas una verificación adicional. Primero recorta la cadena a la longitud deseada, luego recorta el resultado de eso a su último límite de palabra
Puede extender el
String
prototipo nativo con su función. En ese caso, elstr
parámetro debe eliminarse ystr
dentro de la función debe reemplazarse conthis
:Más desarrolladores dogmáticos pueden capitular fuertemente sobre eso (" No modifique los objetos que no posee ". Sin embargo, no me importaría).
Un enfoque sin extender el
String
prototipo es crear su propio objeto auxiliar, que contiene la cadena (larga) que proporciona y el método mencionado anteriormente para truncarlo. Eso es lo que hace el fragmento de abajo.Mostrar fragmento de código
Finalmente, puede usar css solo para truncar cadenas largas en nodos HTML. Le da menos control, pero puede ser una solución viable.
Mostrar fragmento de código
fuente
substr
es una longitud, por lo que deberíasubstr(0,n)
limitarse a los primerosn
caracteres.…
con puntos suspensivos reales (...
) en su ejemplo de código. Si está intentando usar esto para interactuar con las API, querrá la entidad que no sea HTML allí.Tenga en cuenta que esto solo debe hacerse para Firefox.Todos los
demásnavegadores admiten una solución CSS (consulte la tabla de soporte ):La ironía es que obtuve ese fragmento de código de Mozilla MDC.
fuente
white-space: nowrap;
). Cuando se trata de más de una línea, estás atrapado con JavaScript.Your picture ('some very long picture filename truncated...') has been uploaded.
Hay razones válidas por las que las personas pueden desear hacer esto en JavaScript en lugar de CSS.
Para truncar a 8 caracteres (incluidos puntos suspensivos) en JavaScript:
o
fuente
.replace(/^(.{7}).{2,}/, "$1…");
en su lugarlong
yshort
están reservadas como palabras clave futuras por especificaciones ECMAScript anteriores (ECMAScript 1 a 3). Ver MDN: Futuras palabras clave reservadas en estándares anterioresUtilice el truncamiento de lodash
o subrayar.cadena truncada .
fuente
De alguna manera, el código anterior no funcionaba para algún tipo de copia de texto pegado o escrito en la aplicación vuejs. Así que usé lodash truncate y ahora funciona bien.
fuente
Aquí está mi solución, que tiene algunas mejoras sobre otras sugerencias:
Eso:
fuente
La mejor función que he encontrado. Crédito a puntos suspensivos de texto .
Ejemplos :
fuente
Todos los navegadores modernos ahora admiten una solución CSS simple para agregar automáticamente puntos suspensivos si una línea de texto excede el ancho disponible:
(Tenga en cuenta que esto requiere que el ancho del elemento esté limitado de alguna manera para que tenga algún efecto).
Basado en https://css-tricks.com/snippets/css/truncate-string-with-ellipsis/ .
Cabe señalar que este enfoque no se limita en función del número de caracteres. Tampoco no funciona si es necesario para permitir que múltiples líneas de texto.
fuente
text-direction: rtl
ytext-align: left
. Ver davidwalsh.name/css-ellipsis-leftLa mayoría de los marcos JavaScript modernos ( JQuery , Prototype , etc. ) tienen una función de utilidad añadida a String que maneja esto.
Aquí hay un ejemplo en Prototype:
Esta parece ser una de esas funciones con las que desea que otra persona se ocupe. Dejaría que el marco lo manejara, en lugar de escribir más código.
fuente
truncate()
; es posible que necesite una extensión como underscore.string ._.trunc
que hace exactamente esto.Tal vez me perdí un ejemplo de dónde alguien está manejando nulos, pero 3 respuestas TOP no funcionaron para mí cuando tenía nulos (Claro, me doy cuenta de que el manejo de errores es y millones de otras cosas NO es responsabilidad de la persona que responde la pregunta, pero desde Había usado una función existente junto con una de las excelentes respuestas de puntos suspensivos de truncamiento que pensé que proporcionaría a otros.
p.ej
javascript:
utilizando la función de truncamiento
Sin embargo, en news.comments siendo nulo esto "se rompería"
Final
función trunc cortesía de KooiInc
Mi simple verificador nulo (también busca cosas "nulas" literales (esto atrapa indefinido, "", nulo, "nulo", etc.)
fuente
A veces, los nombres de los archivos están numerados, donde el índice puede estar al principio o al final. Entonces quería acortar desde el centro de la cadena:
Tenga en cuenta que usé un carácter de relleno aquí con más de 1 byte en UTF-8.
fuente
Puede usar la función Ext.util.Format.ellipsis si está usando Ext.js.
fuente
Voté por la solución de Kooilnc. Muy buena solución compacta. Hay un caso pequeño que me gustaría abordar. Si alguien ingresa una secuencia de caracteres realmente larga por cualquier razón, no se truncará:
fuente
Con una búsqueda rápida en Google encontré esto ... ¿Eso funciona para ti?
fuente
Desbordamiento de texto: puntos suspensivos es la propiedad que necesita. Con esto y un desbordamiento: oculto con un ancho específico, todo lo que supere obtendrá el efecto de tres puntos al final ... No olvide agregar espacios en blanco: ahora o el texto se colocará en varias líneas.
fuente
La respuesta de c_harm es, en mi opinión, la mejor. Tenga en cuenta que si desea usar
Tendrá que usar un constructor de objetos regexp en lugar de un literal. También tendrás que escapar
\S
al convertirlo.fuente
Use el siguiente código
fuente
Corrección de la solución de Kooilnc:
Esto devuelve el valor de cadena en lugar del objeto de cadena si no necesita ser truncado.
fuente
Recientemente tuve que hacer esto y terminé con:
Se siente agradable y limpio para mí :)
fuente
Me gusta usar .slice () El primer argumento es el índice inicial y el segundo es el índice final. Todo en el medio es lo que obtienes.
fuente
En algún lugar inteligente: D
fuente
Esta función también hace el espacio truncado y las partes de palabras (ej .: Madre en Polilla ...)
uso:
salida:
fuente