【问题标题】:counting length of number and character inside string using regex in ruby在ruby中使用正则表达式计算字符串中数字和字符的长度
【发布时间】:2014-08-25 08:39:45
【问题描述】:

如何在 ruby​​ 中使用正则表达式计算字符串中数字和字符的长度? 如果我有这样的情况,如何解决? 示例:

abc = "12345678a"

使用正则表达式计算后,我想得到这样的结果:

number = 8
char = 1

怎么做?

【问题讨论】:

  • 除了正则表达式之外,如何获得其他方式?

标签: ruby regex string numbers character


【解决方案1】:

尝试关注

abc = "12345678a"
abc.scan(/\d/).length
# => 8 
abc.scan(/\D/).length
# => 1 

【讨论】:

  • 你不需要join
  • 请注意,scan(/\D/).length 为您提供不是数字的字符数,包括空格、换行符、标点符号等。这很可能是期望的行为,很容易实现。
  • @funkwurm :- 是的,我忘了提,+1
【解决方案2】:

没有正则表达式:

abc = "12345678a"
p abc.count("0-9") # => 8
p abc.count("a-zA-Z") # => 1

【讨论】:

    【解决方案3】:

    这是一个可选的,但我仍然认为正则表达式更好。

    irb(main):051:0> number, char = abc.bytes.to_a.partition { |e| e >= 48 and e <= 57}
    => [[49, 50, 51, 52, 53, 54, 55, 56], [97]]
    irb(main):053:0> number.count
    => 8
    irb(main):054:0> char.count
    => 1
    

    partition:返回两个数组,第一个包含 enum 中块计算结果为 true 的元素,第二个包含其余的。

    【讨论】:

      猜你喜欢
      • 2021-08-06
      • 1970-01-01
      • 1970-01-01
      • 2016-03-03
      • 1970-01-01
      • 2013-06-04
      • 2011-12-22
      • 1970-01-01
      • 2022-07-03
      相关资源
      最近更新 更多