Будьте осторожны с использованием
SET sql_mode = ''
Это фактически очищает все поддерживаемые режимы. Если вы не хотите связываться с другими настройками, сначала вы хотите сделать
SELECT @@sql_mode
, чтобы получить список разрешенных разделов с запятыми, затем установите его в этот список без ONLY_FULL_GROUP_BY
.
Существует метод строк
для строк, который возвращает перечислитель
. Вызовите счетчик счетчик
в счетчике.
str = "Hello\nWorld"
str.lines.count # 2
str = "Hello\nWorld\n" # trailing newline is ignored
str.lines.count # 2
Метод строк
был введен в Ruby 1.8.7. Если вы используете старую версию, ознакомьтесь с ответами @mipadi и @Greg.
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
для данного файлового объекта (здесь, в rails)
file = File.open(File.join(Rails.root, 'lib', 'file.json'))
file.readlines.count
возвращает количество строк
IO # readlines выполняет метод разделения строк (в данном случае IOStrings), используя переводы в качестве разделителя
Одним из способов может быть подсчет количества окончаний строк (\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 }
"hello \ nworld \ nfoo bar \ n \ n" .chomp.split ("\ n", - 1) .size # => 4
String # chomp
избавляется от конца строки если он существует, и -1 разрешает пустые строки.