假设我有如下字符串变量:
s1="10$"
s2="10$ I am a student"
s3="10$Good"
s4="10$ Nice weekend!"
如您所见,s2
和 s4
在 10$
之后有空格。
一般来说,我想有一种方法来检查字符串以10$
开始并且在空白> 10$
。例如,在我上面的例子中,规则应该找到 s2
和 s4
。如何定义这样的规则来检查字符串是否以 '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/