Удалить символы после любых тегов - PullRequest
1 голос
/ 05 марта 2020

Я работаю в рельсах. У меня есть одно сомнение.

  1. a = "ABCD123"
     I want to print ABCD123

  2. b = "ABCDE<123>"
     I want to print ABCDE

Для этого я использую это

a.scan(/\b[A-Za-z]+\b/).join and 

b.scan(/\b[A-Za-z]+\b/).join.

Первый дает ноль, но я хочу напечатать его как ABCD123, а второй показывает, что правильно хочу.

Может кто-нибудь, пожалуйста, помогите мне. Спасибо.

Ответы [ 4 ]

1 голос
/ 05 марта 2020

код ниже может удалить все теги в строке

a = "ABCD123"
b = "ABCDE<123>"

a.gsub /<.*?>/, ''     # => "ABCD123"
b.gsub /<.*?>/, ''     # => "ABCDE"
0 голосов
/ 05 марта 2020

Поскольку комментарии немного ограничены:

Вот небольшой фрагмент для проверки различных входных данных.

strings = %w[ABCD123 ABCD<123> ABCD <123>ABCDE]

strings.each do |string|
  match = string.match(/(^[A-Za-z0-9]+)/)
  if match
    puts "'#{string}' => #{match[1]}"
  else
    puts "'#{string}' does not match pattern"
  end
end

Это желаемое поведение?

'ABCD123' => ABCD123
'ABCD<123>' => ABCD
'ABCD' => ABCD
'<123>ABCDE' does not match pattern
0 голосов
/ 05 марта 2020
def conversion(str)
  index_number = str.index(/[\W_]+/)
  if index_number.present?
    main_str = str.gsub(str[index_number..],'')
  else
    main_str = str
  end
  return main_str
end

или вы можете использовать

b = "ABCD-123" b.match(/(^[A-Za-z0-9]+)/)[1] #=> "ABCD"

0 голосов
/ 05 марта 2020

Вы можете попробовать следующее,

b = "ABCDE<123>"
b[/[^<>]+/]
# => "ABCDE"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...