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。你使用了=~
,这不符合你的要求。你想要=~
(注意只有一个等号)。闻起来像作业。将家庭作业问题标记为“家庭作业”并包含您需要的源代码被认为是一种良好的做法