在Ruby语言中,如何获取字符串中的行数?
有一个lines
返回一个字符串的方法Enumerator
.呼吁count
调查员.
str = "Hello\nWorld" str.lines.count # 2 str = "Hello\nWorld\n" # trailing newline is ignored str.lines.count # 2
该lines
方法在Ruby 1.8.7中引入.如果您使用的是旧版本,请查看@mipadi和@Greg的答案.
一种方法是计数行尾的号码(\n
或者\r\n
,取决于字符串),需要提醒的是,如果字符串并没有在一个新行结束,你必须确保添加一个到您的计数.您可以使用以下内容执行此操作:
c = my_string.count("\n") c += 1 unless c[-1,1] == "\n"
您也可以循环遍历字符串并计算行数:
c = 0 my_string.each { |line| c += 1 }
继续使用该解决方案,您可以非常喜欢和使用inject
:
c = my_string.each.inject(0) { |count, line| count += 1 }
string".split("\n").size
效果很好。我喜欢它忽略尾随换行符(如果它们不包含内容)。
"Hello\nWorld\n".split("\n") # => ["Hello", "World"] "hello\nworld\nfoo bar\n\n".split("\n").size # => 3
那可能不是您想要的,因此lines()
,如果需要使用所有换行符,请使用@Anurag的建议。
"hello\nworld\nfoo bar\n\n".lines.count # => 4