ruby-on-rails - 字符串格式检查

标签 ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1

假设我有如下字符串变量:

s1="10$" 
s2="10$ I am a student"
s3="10$Good"
s4="10$       Nice weekend!"

如您所见,s2s410$ 之后有空格。

一般来说,我想有一种方法来检查字符串10$开始并且在空白> 10$ 。例如,在我上面的例子中,规则应该找到 s2s4。如何定义这样的规则来检查字符串是否以 '10$' 开头并且后面有空格?

我的意思是像 s2.RULE? 应该返回 true 或 false 来判断它是否是匹配的字符串。

------------更新--------------------

如果使用 10# 而不是 10$,请同时告知解决方案

最佳答案

您可以使用 Regular Expressions 执行此操作(准确地说,Ruby 具有 Perl 风格的正则表达式)。

# For ease of demonstration, I've moved your strings into an array
strings = [
  "10$",
  "10$ I am a student",
  "10$Good",
  "10$       Nice weekend!"
]

p strings.find_all { |s| s =~ /\A10\$[ \t]+/ }

正则表达式分解如下:

  • 开头和结尾的 / 告诉 Ruby 中间的所有内容都是正则表达式的一部分
  • \A 匹配字符串的开头
  • 10 逐字匹配
  • \$ 表示逐字匹配一个$。我们需要对其进行转义,因为 $ 在正则表达式中具有特殊含义。
  • [\t]+ 表示“匹配至少一个空格和/或制表符”

所以这个正则表达式表示“匹配以 10$ 开头且后跟至少一个空白或制表符的每个字符串”。使用 =~ 您可以在 Ruby 中针对此表达式测试字符串。 =~ 将返回一个非 nil 值,如果在 if 等条件中使用,该值的计算结果为 true。

编辑:根据 Asmageddon's 更新了空格匹配建议。

关于ruby-on-rails - 字符串格式检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8184172/

相关文章:

ruby - 在 Argument Error 消息上方和下方添加一个空行

ruby-on-rails - 如何在生产模式下在 Rails 中记录系统命令输出?

ruby-on-rails - Rails - Paper_Clip - 支持多文件上传

ruby-on-rails - 在热切加载关联上指定条件后无法获取对象

html - 对不在 <form> 标签中的表单使用 ruby​​ mechanize?

ruby-on-rails - 如何测试优惠券/促销代码的唯一性?

Ruby:计算数组中的记录

jquery - Rails3 应用程序使用 jquery 但未将其包含在 Gemfile 中,应该吗?

ruby-on-rails - 如何以正确的方式保存 Rails 上的 HABTM 关系

javascript - 在 Rails 中进行 javascript 和 jQuery 测试的 JSpec vs Jasmine vs QUnit