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