¿Cuál es la mejor manera de truncar una cadena a las primeras n palabras?Truncar cadena a las primeras n palabras
Respuesta
n = 3
str = "your long long input string or whatever"
str.split[0...n].join(' ')
=> "your long long"
str.split[0...n] # note that there are three dots, which excludes n
=> ["your", "long", "long"]
'str.split (/ \ s + /, n + 1) [0 ... n] .join ('')' mejorará el rendimiento. – sawa
esto obtendrá las primeras 4 palabras, no 3. –
@ZackXu Asegúrese de usar el rango '... 'literal, no el' ..'. Tres puntos excluye el enésimo valor. –
Se podía hacerlo de esta manera:
s = "what's the best way to truncate a ruby string to the first n words?"
n = 6
trunc = s[/(\S+\s+){#{n}}/].strip
si no le importa hacer una copia.
También podría aplicar Sawa's Mejoras (desea todavía era un matemático, que sería un gran nombre para un teorema) mediante el ajuste de la detección de los espacios en blanco:
trunc = s[/(\s*\S+){#{n}}/]
Si usted tiene que tratar con un n
que es mayor que el número de palabras en s
entonces se podría utilizar esta variante:
s[/(\S+(\s+)?){,#{n}}/].strip
Una mejora: 'trunc = s [/ (\ s * \ S +) {# {n}} /]'. No necesitas 'strip'. – sawa
@sawa: Podría poner eso (y su versión del enfoque 'dividir') como una respuesta, las mejoras y aclaraciones de las respuestas existentes valen la pena. –
@sawa, y agregue un punto de referencia que muestre la aceleración. –
puede utilizar str.split.first(n).join(' ')
siendo n cualquier número.
Los espacios blancos contiguos en la cadena original se reemplazan con un espacio en blanco único en la cadena devuelta.
Por ejemplo, intente esto en IRB:
>> a='apple orange pear banana pineaple grapes'
=> "apple orange pear banana pineaple grapes"
>> b=a.split.first(2).join(' ')
=> "apple orange"
Esta sintaxis es muy claro (ya que no utiliza la expresión regular, array rebanada por índice). Si programa en Ruby, sabe que la claridad es una elección estilística importante.
Una forma abreviada de join
es *
Así que esta sintaxis str.split.first(n) * ' '
es equivalente y más corto (más idiomática, menos clara para los no iniciados).
También puede utilizar take
en lugar de first
por lo que el siguiente sería hacer lo mismo
a.split.take(2) * ' '
Esto podría ser seguido si es de carriles 4.2 (que tiene truncate_words)
string_given.squish.truncate_words(number_given, omission: "")
- 1. R: Truncar cadena sin partiendo palabras
- 2. ¿Cómo obtener las primeras N palabras de un NSString en Objective-C?
- 3. expresiones regulares para truncar las palabras largas y añadir elipses
- 4. Truncar cadena en palabras enteras en .NET C#
- 5. manera eficiente para truncar la cadena de longitud N
- 6. puede truncar una cadena multibyte en n caracteres
- 7. ¿Cómo seleccionar las primeras 10 palabras de una oración?
- 8. Extraiga las primeras palabras X (no solo caracteres) de mySQL
- 9. ¿Puedo grep solo las primeras n líneas de un archivo?
- 10. Mongodb: Seleccione las primeras N filas de cada grupo
- 11. ¿Omitiendo las primeras n líneas cuando usas regex con sed?
- 12. Cómo unir las primeras n líneas en un archivo
- 13. Cómo seleccionar las N primeras filas en un Grupo LinqPor
- 14. ¿Cómo puedo eliminar las primeras n líneas en una cadena en C#?
- 15. PHP ¿Cuál es la mejor manera de obtener las primeras 5 palabras de una cadena?
- 16. Regex para obtener las dos primeras palabras de longitud desconocida de una cadena
- 17. Dividir una cadena solo en las primeras n ocurrencias de un delimitador
- 18. Buscar las primeras 4 palabras y las últimas 4 palabras de la base de datos después de palabras clave particulares?
- 19. Seleccionar primeras n filas en ContentProvider
- 20. Truncar la oración a un cierto número de palabras
- 21. En un cuadro de texto, proteja las primeras palabras, pero permita agregar/editar texto más allá de esas palabras
- 22. Convertir palabras (cadena) a Int
- 23. Expresión regular eliminando todas las palabras más cortas que n
- 24. Ordenar cadenas, primeras letras primero, luego letras dentro de las palabras
- 25. Python truncar una cadena larga
- 26. ¿Cómo funciona la relación modelo n - n en el código EF Las primeras vistas generadas automáticamente funcionan correctamente?
- 27. Obtenga las primeras líneas de Wikipedia Artículo
- 28. Extracción n primeras columnas de una matriz numpy
- 29. carga lenta de solo las primeras líneas N en emacs org-mode
- 30. ¿Cómo obtener todas las palabras de una cadena en C#?
Está usted usando solo Ruby, o Ruby on Rails? –