热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

不断发展的RubyCase语句-RubyCaseStatementthatkeepsprogressing

Imtryingtoconvertspecialsymbols({W}{B}{U}etc)totheirrespectivecolorsoIwroteaCASE

I'm trying to convert special symbols ({W} {B} {U} etc) to their respective color so I wrote a CASE but I'm thinking a case isn't what I need since it ends as soon as it finds a match.

我正在尝试将特殊符号({B} {U}等)转换成它们各自的颜色,所以我写了一个CASE,但我认为一个CASE不是我需要的,因为它一旦找到匹配就结束了。

print 'Test a Color'
color = gets.chomp

case color
when '{W}'
  puts 'White'
when '{R}'
  puts 'Red'
when '{G}'
  puts 'Green'
when '{U}'
  puts 'Blue'
when '{B}'
  puts 'Black'
end

{B} gets me Black, {U} gets my Blue. {U}{B} crashes it/returns nothing. How would I go about letting it continue down the list?

{B}让我黑,{}得到我的蓝色。{你} { B }崩溃它/返回。我该如何让它继续下去?

4 个解决方案

#1


7  

Check below.

下面的检查。

print "Test a Color"
color = gets.chomp

hash = {
  '{W}' => 'White',
  '{R}' => 'Red'
}

# finding by regex and replace with what you want.
puts color.gsub(/\{.+?\}/){|k| hash[k] || k }

#2


2  

colors = {
  'W' => 'White',
  'R' => 'Red',
  'G' => 'Green',
  'U' => 'Blue',
  'B' => 'Black',
}

input.scan(/{(\w)}/).each { |abbreviation| puts colors[*abbreviation] }

#3


2  

Caveat

The following isn't the most efficient or idiomatic solution. However, it addresses your problem by making some simple improvements to your existing code while preserving your current semantics.

下面的方法不是最有效的或惯用的方法。但是,它通过对现有代码做一些简单的改进来解决您的问题,同时保留当前的语义。

Loop Over Your Case Statement

This solution reads standard input and converts it into an Array object stored in colors, and then loops over the case statement for each element of that array.

该解决方案读取标准输入并将其转换为以颜色存储的数组对象,然后循环遍历该数组的每个元素的case语句。

print "Test a Color: "
colors = gets.chomp.scan /\{[WRGUB]\}/
colors.each do |color|
  case color
  when "{W}"
    puts "White"
  when "{R}"
    puts "Red"
  when "{G}"
    puts "Green"
  when "{U}"
    puts "Blue"
  when "{B}"
    puts "Black"
  end
end

This will result in output similar to the following:

这将导致类似以下的输出:

$ ruby colors.rb 
Test a Color: {W}{B}
White
Black

#4


1  

While @xdazz’ answer does the trick, it is not quite ruby idiomatic:

虽然@xdazz的回答很管用,但它并不完全是ruby惯用法:

hash = %w|W R G U B|.map { |e| "{#{e}}"}
                    .zip(%w|White Red Green Blue Black|)
                    .to_h

print "Test a Color"
# color = gets.chomp
color = "Hello, {W}, I am {B}!"
puts color.gsub(Regexp.union(hash.keys), hash)
#⇒ Hello, White, I am Black!

We use here String#gsub(pattern, hash).

我们在这里使用字符串#gsub(模式,散列)。


推荐阅读
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • sklearn数据集库中的常用数据集类型介绍
    本文介绍了sklearn数据集库中常用的数据集类型,包括玩具数据集和样本生成器。其中详细介绍了波士顿房价数据集,包含了波士顿506处房屋的13种不同特征以及房屋价格,适用于回归任务。 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文讨论了Kotlin中扩展函数的一些惯用用法以及其合理性。作者认为在某些情况下,定义扩展函数没有意义,但官方的编码约定支持这种方式。文章还介绍了在类之外定义扩展函数的具体用法,并讨论了避免使用扩展函数的边缘情况。作者提出了对于扩展函数的合理性的质疑,并给出了自己的反驳。最后,文章强调了在编写Kotlin代码时可以自由地使用扩展函数的重要性。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 向QTextEdit拖放文件的方法及实现步骤
    本文介绍了在使用QTextEdit时如何实现拖放文件的功能,包括相关的方法和实现步骤。通过重写dragEnterEvent和dropEvent函数,并结合QMimeData和QUrl等类,可以轻松实现向QTextEdit拖放文件的功能。详细的代码实现和说明可以参考本文提供的示例代码。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • eclipse学习(第三章:ssh中的Hibernate)——11.Hibernate的缓存(2级缓存,get和load)
    本文介绍了eclipse学习中的第三章内容,主要讲解了ssh中的Hibernate的缓存,包括2级缓存和get方法、load方法的区别。文章还涉及了项目实践和相关知识点的讲解。 ... [详细]
  • CF:3D City Model(小思维)问题解析和代码实现
    本文通过解析CF:3D City Model问题,介绍了问题的背景和要求,并给出了相应的代码实现。该问题涉及到在一个矩形的网格上建造城市的情景,每个网格单元可以作为建筑的基础,建筑由多个立方体叠加而成。文章详细讲解了问题的解决思路,并给出了相应的代码实现供读者参考。 ... [详细]
  • 本文介绍了一个题目的解法,通过二分答案来解决问题,但困难在于如何进行检查。文章提供了一种逃逸方式,通过移动最慢的宿管来锁门时跑到更居中的位置,从而使所有合格的寝室都居中。文章还提到可以分开判断两边的情况,并使用前缀和的方式来求出在任意时刻能够到达宿管即将锁门的寝室的人数。最后,文章提到可以改成O(n)的直接枚举来解决问题。 ... [详细]
  • 第四章高阶函数(参数传递、高阶函数、lambda表达式)(python进阶)的讲解和应用
    本文主要讲解了第四章高阶函数(参数传递、高阶函数、lambda表达式)的相关知识,包括函数参数传递机制和赋值机制、引用传递的概念和应用、默认参数的定义和使用等内容。同时介绍了高阶函数和lambda表达式的概念,并给出了一些实例代码进行演示。对于想要进一步提升python编程能力的读者来说,本文将是一个不错的学习资料。 ... [详细]
  • 本文介绍了在iOS开发中使用UITextField实现字符限制的方法,包括利用代理方法和使用BNTextField-Limit库的实现策略。通过这些方法,开发者可以方便地限制UITextField的字符个数和输入规则。 ... [详细]
author-avatar
多米音乐_34324431
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有