我有输入值,如:
string =“devid”string =“devid123”string =“devid.123.devid”我需要对包含。(number)。的字符串进行排序,例如“devid.123.devid”。我怎么才能分开……
如果它确定格式有效 的 PERSONNAME 强> 总是
<string>.<number>.<string>
你可以尝试使用 :[regex, index] ruby中字符串的方法。
:[regex, index]
https://ruby-doc.org/core-2.6.1/String.html#method-i-5B-5D
因此,如果
personname = "devid.123.devid"
s[/(.*)(\.\d+\.)(.*)/, 2] = ".123."
正则表达式中有三个不同的组 (.*)(\.\d+\.)(.*) 。
(.*)(\.\d+\.)(.*)
.<number>.
因此,基于此正则表达式,第二组应该为您提供 .<number>. 我希望,这是你需要的。
使用Ruby 2.4.1测试
如果我理解正确,你只需要一个前面有数字的字符串 . 。如果是这样,你需要修改你的正则表达式 /\.\d+/
.
/\.\d+/
@person = Person.new personname=params['personname'] if personname.match("/\.\d+/") @person.person_name = personname @person.save result = 'true' end
但这听起来像你应该在模型中处理的逻辑,因为它被标记为rails而不是普通的旧ruby
class PersonController def create if @person = Person.create(params) result = 'true' else result = 'false' end # whatever you doing with result end end
class Person < ApplicationRecord validates :personname, format: { with: /\.\d+\./, message: 'must include digits' } end
你可以玩正则表达式 @ rubular