In Ruby-Sprache, wie kann ich die Anzahl der Zeilen in einer Zeichenfolge abrufen?In Ruby-Sprache, wie kann ich die Anzahl der Zeilen in einer Zeichenfolge erhalten?
Antwort
Es gibt eine lines
Methode für Strings, die ein Enumerator
zurückgibt. Rufen Sie count
für den Enumerator auf.
str = "Hello\nWorld"
str.lines.count # 2
str = "Hello\nWorld\n" # trailing newline is ignored
str.lines.count # 2
lines
Die Methode wurde in Ruby 1.8.7 eingeführt. Wenn Sie eine ältere Version verwenden, überprüfen Sie die Antworten unter @mipadi und @Greg.
Eine Möglichkeit wäre, die Anzahl der Zeilenende zu zählen (\n
oder \r\n
, auf der Saite abhängig), der Nachteil ist, dass, wenn die Zeichenfolge tut nicht Ende in einer neuen Zeile, Sie sicherstellen, müssen würden um eins zu deiner Zählung hinzuzufügen. Man könnte dies mit den folgenden:
c = my_string.count("\n")
c += 1 unless c[-1,1] == "\n"
könnten Sie auch nur eine Schleife durch den String und die Linien zählen:
c = 0
my_string.each { |line| c += 1 }
mit dieser Lösung fortsetzen, könnte man wirklich Lust bekommen und verwenden inject
:
c = my_string.each.inject(0) { |count, line| count += 1 }
, die die meisten unnötig ist c omplex Lösung Ich habe in zehn Minuten gesehen –
@David: Es ist eine Zeile Code. 'String # Zeilen' ist nicht in allen Versionen von Ruby, wie in einer anderen Antwort erwähnt. – mipadi
IO # readlines ist in den meisten Versionen glaube ich .. –
string".split("\n").size
funktioniert gut. Ich mag es, dass nachfolgende Zeilen ignoriert werden, wenn sie keinen Inhalt enthalten.
"Hello\nWorld\n".split("\n") # => ["Hello", "World"]
"hello\nworld\nfoo bar\n\n".split("\n").size # => 3
Das ist nicht, was Sie vielleicht sein wollen, so verwenden lines()
als @Anurag stattdessen vorgeschlagen, wenn Sie alle neuen Linien ehren müssen.
"hello\nworld\nfoo bar\n\n".lines.count # => 4
IO # readlines macht dies ohne all die Unordnung, aber das obige ist im Grunde, was es tut (minus der Größe/Anzahl Methode) –
Mit Ausnahme der OP will die Anzahl der Zeilen in einem String, nicht eine Datei. –
"hello\nworld\nfoo bar\n\n".chomp.split("\n",-1).size # => 4
String#chomp
wird von einem Ende der Leitung zu befreien, wenn es vorhanden ist, und die -1 erlaubt leere Strings.
ein Dateiobjekt gegeben (hier in Schienen)
file = File.open(File.join(Rails.root, 'lib', 'file.json'))
file.readlines.count
gibt die Anzahl der Zeilen
IO # readlines on Strings eine Split-Methode durchführt (IOStrings in diesem Fall) unter Verwendung von Zeilenumbrüchen als Trenn
** um das obige in rails zu tun, muss so etwas ("config.autoload_paths + = Dir [" # {config.root}/lib/**/"]) zu config/application.rb hinzugefügt werden –
Dies wird zählen nicht leere Zeilen:
string.split("\n").select{ |line| line != "" }.size
- 1. Wie die Anzahl der Zeiten erhalten eine Zeichenfolge in PHP
- 2. Anzahl der Zeilen in SQLite Zeichenfolge
- 3. So erhalten Sie die Anzahl der Zeilen in Cassandra Tabelle
- 4. Wie die Anzahl der Zeilen in einer Textdatei mit SAS
- 5. Anzahl der SQL-Zeilen in einer Tabelle
- 6. Wie zähle ich die Anzahl der Zeilen in einem jqGrid?
- 7. Anzahl der Bilder in einer Zeichenfolge zählen
- 8. Wie finde ich die Anzahl eines Wortes in einer Zeichenfolge?
- 9. Wie die Anzahl der Zeilen in einer Datenbanktabelle
- 10. Wie man die Anzahl der Wörter in einer Zeichenfolge zählt?
- 11. Wie kann ich die Anzahl der Vorkommen in einer SQL IN-Klausel erhalten?
- 12. Wie zähle ich die Anzahl der Vorkommen einer Zeichenfolge in einer ganzen Datei?
- 13. Wie kann ich die Anzahl der Zeilen im Detailband angeben?
- 14. Wie bekomme ich die Anzahl der betroffenen Zeilen in sqlalchemy?
- 15. Wie bekomme ich die Anzahl der Zeilen in einem Textfeld?
- 16. Wie bekomme ich die Anzahl gelöschter Zeilen in PostgreSQL?
- 17. Müssen die Anzahl der Zeichenfolge in einer Datei finden
- 18. Anzahl der Zeilen einer Gridview in Android
- 19. Wie wird die Anzahl der Zeilen in einer Objective-C-Zeichenfolge (NSString) gezählt?
- 20. Wie kann ich die Anzahl der Vorkommen des Zeichens '/' in einer C-Zeichenfolge zählen?
- 21. In Vim, wie erhalten Sie die Anzahl der Zeilen in der aktuellen Datei mit vimscript?
- 22. Anzahl der Zeilen in csv.DictReader
- 23. Wie die Anzahl der Zeilen in einer Ergebnismenge erhalten medoo mit
- 24. Wie bekomme ich die Anzahl der Artikel in einer Combobox?
- 25. Anzahl der Vorkommen in einer Zeichenfolge
- 26. So erhalten Sie die Anzahl der Zeilen für bestimmte Bedingungen
- 27. Erhalten Sie die Anzahl der Spalten in einer ASCII-Datei
- 28. Wie verwende ich die RowCounter-Klasse von Hbase, um die Anzahl der Zeilen in einer Tabelle zu erhalten?
- 29. Kann die Anzahl der Übereinstimmungen in einer Regex umgeleitet werden?
- 30. Wie kann ich einer Zeichenfolge eine undefinierte Anzahl von Ziffern hinzufügen, also kann ich die Zeichenfolge in ein int umwandeln?
"Hello \ nWorld \ n" .lines.to_a # => ["Hallo \ n", "Welt \ n"] Hinweis, die Zeilenumbrüche werden nicht ignoriert, Sie sind in der Zeile enthalten. –
Greg, ich meine, die allerletzte Zeilenumbruch wird ignoriert, um die Anzahl der Zeilen zu zählen. – Anurag
Dies funktioniert nicht in Ruby 1.8.6. –