Ruby on rails 字符串格式检查

Ruby on rails 字符串格式检查,ruby-on-rails,ruby,ruby-on-rails-3,ruby-on-rails-3.1,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!" 如上所述,s2和s4在10$之后有空格 通常,我想有一种方法来检查字符串是否以10$开头,并且在10$之后是否有空格。例如,在我上面的例子中,规则应该找到s2和s4。如何定义这样的规则来检查字符串是否以“10$”开头,后面是否有空格 我的意思是类似于s2.RULE?应该返回true或false来判断它是否是匹配的字符串

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

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$

则请告知解决方案,此方法有效:

"10$ " =~ /^10\$ +/
false
时返回
nil
,当
true
时返回
0
。多亏了Ruby的规则,您可以直接使用它。

这样做:

"10$ " =~ /^10\$ +/

false
时返回
nil
,当
true
时返回
0
。由于Ruby的规则,您可以直接使用它。

使用如下正则表达式:

/10\$\s+/
编辑

如果使用=~进行匹配,请注意

=~运算符返回字符串中的字符位置 比赛开始

所以它可能返回0来表示匹配。只有归零意味着没有对手


例如,请参阅ruby正则表达式教程。

使用如下正则表达式:

/10\$\s+/
编辑

如果使用=~进行匹配,请注意

=~运算符返回字符串中的字符位置 比赛开始

所以它可能返回0来表示匹配。只有归零意味着没有对手

例如,请参阅ruby正则表达式教程。

您可以使用(确切地说,ruby有Perl风格的正则表达式)来实现这一点

正则表达式分解如下:

  • 开头和结尾的
    /
    告诉Ruby介于两者之间的所有内容都是正则表达式的一部分
  • \A
    匹配字符串的开头
  • 10
    逐字匹配
  • \$
    表示逐字匹配
    $
    。我们需要转义它,因为
    $
    在正则表达式中有特殊的含义
  • [\t]+
    表示“至少匹配一个空白和/或选项卡”
因此,正则表达式表示“匹配以
10$
开头,后跟至少一个空白字符或制表符的每个字符串”。使用
=~
可以在Ruby中针对这个表达式测试字符串
=~
将返回一个非nil值,如果在类似
if
的条件中使用,则该值将计算为true

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

您可以使用(确切地说,Ruby有Perl风格的正则表达式)来完成此操作

正则表达式分解如下:

  • 开头和结尾的
    /
    告诉Ruby介于两者之间的所有内容都是正则表达式的一部分
  • \A
    匹配字符串的开头
  • 10
    逐字匹配
  • \$
    表示逐字匹配
    $
    。我们需要转义它,因为
    $
    在正则表达式中有特殊的含义
  • [\t]+
    表示“至少匹配一个空白和/或选项卡”
因此,正则表达式表示“匹配以
10$
开头,后跟至少一个空白字符或制表符的每个字符串”。使用
=~
可以在Ruby中针对这个表达式测试字符串
=~
将返回一个非nil值,如果在类似
if
的条件中使用,则该值将计算为true


编辑:根据建议更新空格匹配。

如果要继续处理带有$#的情况,请尝试以下正则表达式:

/^10[\$#] +/

如果要继续处理带有$#的情况,请尝试以下正则表达式:

/^10[\$#] +/

10\$+
可以匹配
$10$10$10
,这会很奇怪:)+1如果字符串包含“#”而不是“$”,我是否需要转义“#by\#”呢?否-#不是保留字符,但$是(如果没有转义,则表示行尾)。这会检查字符串是否相等。使用=~匹配正则表达式。请注意我在回答中添加的警告。
10\$+
可以匹配
10$10$10
,这会很奇怪:)+1不管怎样,如果字符串包含“#”而不是“$”,我是否需要转义“#by\”?否-#不是保留字符,但$是(如果没有转义,则表示行尾)。这检查字符串是否相等。使用=~匹配正则表达式。请注意我在回答中添加的警告。\s也将匹配换行符,我将使用[\t\]代替。如果字符串包含“#”而不是“$”,我是否需要转义“#by \#”?不,
不是特殊字符。有一个你需要注意的所有特殊字符的列表。我更新了我的帖子。我尝试了“10#hello”=~/\A10#\s+/,但它返回给我false,我希望是true。你使用了
=~
,这不符合你的要求。您需要
=~
(注意只有一个等号)。\s也将匹配换行符,我将使用[\t\]来代替。如果字符串包含“#”而不是“$”,我是否需要转义“#by \#”?不,
不是特殊字符。有一个你需要注意的所有特殊字符的列表。我更新了我的帖子。我尝试了“10#hello”=~/\A10#\s+/,但它返回给我false,我希望是true。你使用了
=~
,这不符合你的要求。你想要
=~
(注意只有一个等号)。闻起来像作业。将家庭作业问题标记为“家庭作业”并包含您需要的源代码被认为是一种良好的做法