我正在尝试计算文本文件中的字符,不包括空格。我的想法是使用scan
;但是,我正在阅读的教程使用gsub
。两者之间的产出存在差异,我想知道为什么。这是两个代码块; gsub
版本是给我正确输出的版本:
total_characters_nospaces = text.gsub(/\s+/, '').length
puts "#{total_characters_nospaces} characters excluding spaces."
另一个:
chars = 0
totes_chars_no = text.scan(/\w/){|everything| chars += 1 }
puts chars
答案 0 :(得分:5)
\s
的反面不是{{1}} - 它是\w
。
\S
相当于\w
。它不包括许多其他字符,如标点符号。
[a-zA-Z0-9_]
与\S
完全相反 - 它包含任何不是空格的字符。
答案 1 :(得分:0)
现在您的问题已经得到解答,以下是您可以采取的其他几种方式:
s = "now is the time for all good"
s.count "^\s" # => 22
s.each_char.reduce(0) { |count, c| count + (c =~ /\S/ ? 1 : 0) } # => 22