In linguaggio Ruby, come posso ottenere il numero di righe in una stringa?In Ruby, come posso ottenere il numero di righe in una stringa?
risposta
C'è un metodo lines
per stringhe che restituisce un Enumerator
. Chiama count
sull'enumeratore.
str = "Hello\nWorld"
str.lines.count # 2
str = "Hello\nWorld\n" # trailing newline is ignored
str.lines.count # 2
Il metodo lines
è stato introdotto in Ruby 1.8.7. Se stai utilizzando una versione precedente, controlla le risposte di @mipadi e @Greg.
Un modo potrebbe essere quello di contare il numero di fine riga (o \n
\r\n
, a seconda della stringa), l'avvertenza è che se la stringa non non fine a una nuova linea, si dovrà fare in modo per aggiungere uno al tuo conteggio. Si potrebbe farlo con la seguente:
c = my_string.count("\n")
c += 1 unless c[-1,1] == "\n"
Si potrebbe anche solo ciclo attraverso la stringa e contare le righe:
c = 0
my_string.each { |line| c += 1 }
Continuando con questa soluzione, si potrebbe ottenere molto di fantasia e utilizzare inject
:
c = my_string.each.inject(0) { |count, line| count += 1 }
che è il più inutilmente c soluzione omplex che ho visto in decine di minuti –
@David: è una riga di codice. 'String # lines' non è in tutte le versioni di Ruby, come indicato in un'altra risposta. – mipadi
I read delle IO # sono nella maggior parte delle versioni. –
string".split("\n").size
funziona bene. Mi piace che ignori le nuove righe finali se non contengono contenuti.
"Hello\nWorld\n".split("\n") # => ["Hello", "World"]
"hello\nworld\nfoo bar\n\n".split("\n").size # => 3
che potrebbe non essere ciò che si desidera, in modo da utilizzare come lines()
@Anurag suggerito, invece, se avete bisogno di onorare tutte le nuove linee.
"hello\nworld\nfoo bar\n\n".lines.count # => 4
IO # readlines fa tutto questo senza tutti i problemi, ma quanto sopra è fondamentalmente quello che fa (meno il metodo size/count) –
Tranne che l'OP vuole il numero di nuove righe in una stringa, non un file. –
"hello\nworld\nfoo bar\n\n".chomp.split("\n",-1).size # => 4
String#chomp
si libera di un'estremità di linea, se esiste, e il -1 permette stringhe vuote.
dato un oggetto file (in questo caso, in rotaie)
file = File.open(File.join(Rails.root, 'lib', 'file.json'))
file.readlines.count
restituisce il numero di linee
IO # readlines esegue un metodo split su stringhe (IOStrings in questo caso) utilizzando nuove righe come separatore
** per fare quanto sopra in rotaie, qualcosa di simile a questo ("config.autoload_paths + = Dir [" # {config.root}/lib/**/"]") deve essere aggiunto a config/application.rb –
Questo non contare righe vuote:
string.split("\n").select{ |line| line != "" }.size
- 1. Come posso contare il numero di parole in una stringa?
- 2. Come ottenere il numero di caratteri in una stringa: std ::?
- 3. Come ottenere il numero di righe utilizzando SqlDataReader in C#
- 4. Come ottenere il numero di righe cancellate in PostgreSQL?
- 5. Zend_Db: come ottenere il numero di righe da una tabella?
- 6. Come ottenere il numero di righe interessate in sqlalchemy?
- 7. Ruby: come contare il numero di volte che una stringa appare in un'altra stringa?
- 8. Come ottenere il numero di righe inserite da una transazione
- 9. Ruby: come ottenere il primo carattere di una stringa
- 10. Come posso ottenere il nome di una classe Ruby?
- 11. MySql ottenere il numero di righe
- 12. php ottenere il numero da una stringa
- 13. Converti un numero intero in una stringa firmata in Ruby
- 14. MySQL ottiene il numero di righe in una tabella innodb
- 15. Ottenere il numero totale di righe in Entity Framework
- 16. Come posso ottenere una parte di una stringa in C++?
- 17. Come ottenere il numero di righe nella tabella di Cassandra
- 18. Come posso generare una stringa casuale e univoca in Ruby?
- 19. in javascript, come posso ottenere l'ultimo carattere di una stringa
- 20. Numero di righe in csv.DictReader
- 21. In Ruby, come posso sostituire il carattere punto interrogativo in una stringa?
- 22. Coffeescript: come posso convertire una stringa in un numero?
- 23. Come ottenere il numero di elementi in una casella combinata?
- 24. come ottenere il numero totale di righe con mysqli
- 25. Come ottenere il numero di righe di un GridView?
- 26. Come ottenere il numero di colonne in una matrice?
- 27. sfuggire una stringa in Ruby
- 28. Come posso ottenere il nome della directory corrente in Ruby?
- 29. Dividere la stringa e ottenere semplicemente il numero in python?
- 30. Come trovo un numero in una stringa in Python?
"Hello \ nWorld \ n" .lines.to_a # => ["Hello \ n", "World \ n"] Nota, le newline non vengono ignorate, sono inclusi con la linea. –
Greg, intendevo che l'ultima riga di nuova riga viene ignorata ai fini del conteggio del numero di righe. – Anurag
Questo non funziona in ruby 1.8.6. –