Проверьте, содержит ли строка числа - PullRequest
0 голосов
/ 08 марта 2019

У меня есть входные значения, такие как:

string = "devid"
string = "devid123"
string = "devid.123.devid"

Мне нужно отсортировать строки, содержащие .(number)., например "devid.123.devid".Как я могу отделить только строки, которые состоят из .(numbers). как .123.?Помогите мне найти решение.

В контроллере у меня есть:

@person = Person.new
personname = params['personname']
if personname.match("/\d+/")
  @person.person_name = personname
  @person.save()
  result = 'true'
end

Когда я выполняю этот код, я получаю "devid123" и "devid.123.devid".

Ответы [ 2 ]

2 голосов
/ 08 марта 2019

Если я правильно понимаю, вам нужна только строка, где цифрам предшествует .. Если это так, вам нужно изменить свое регулярное выражение на /\.\d+/

@person = Person.new
personname=params['personname']
if personname.match("/\.\d+/")
  @person.person_name = personname
  @person.save
  result = 'true'
end

Но это звучит как логика, с которой вы должны работать в модели, поскольку она помечена как рельсы, а не как обычный старый рубин

Контроллер

class PersonController

  def create
    if @person = Person.create(params)
      result = 'true'
    else
       result = 'false'
    end
    # whatever you doing with result
  end
end

person.rb

class Person < ApplicationRecord
  validates :personname, format: { with: /\.\d+\./, message: 'must include digits' }
end

Вы можете играть с регулярным выражением @ rubular

2 голосов
/ 08 марта 2019

Если он уверен, что формат действительного personname всегда

<string>.<number>.<string>

Вы можете попробовать использовать метод :[regex, index] для строк в ruby.

https://ruby -doc.org / core-2.6.1 / String.html # method-i-5B-5D

Так что если

personname = "devid.123.devid"

s[/(.*)(\.\d+\.)(.*)/, 2] = ".123."

В регулярном выражении есть три различные группы (.*)(\.\d+\.)(.*).

  1. Совпадает с чем угодно
  2. Совпадает с .<number>.
  3. Совпадает с чем угодно

Поэтому, основываясь на этом регулярном выражении, вторая группа должна предоставить вам .<number>., что, я надеюсь, то, что вам нужно.

Протестировано с Ruby 2.4.1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...