Удалите лишние и запрещенные символы из строки ruby

#ruby-on-rails #ruby

#ruby-on-rails #ruby

Вопрос:

Есть строка: ggSuQNs6TxOTuQDd0j 4sA==$QO/Mq2jwfe3jgsGGoIGmlg== . Мне нужно преобразовать его в ggSuQNs6TxOTuQDd0j4sAQOMq2jwfe3jgsGGoIGmlg (только буквы и цифры). Затем обрежьте его до 13 символов ggSuQNs6TxOTu и вставьте после 3 символов первую половину числа цифр, вставьте после 9 символов вторую половину числа цифр. Например, есть число 3243 и строка ggSuQNs6TxOTu . После того, как ggS32uQNs436TxOTu

Мой английский плохой), надеюсь, вы меня понимаете.

Комментарии:

1. Как вы пытались это решить?

2. Да, любой код или любая идея, с чего начать? Посмотрите на метод регулярных выражений и gsub строк, это было бы началом.

3. Похоже, что 2 строки base64 объединены вместе. Вы уверены, что хотите удалить символы, не являющиеся словами, и сделать строку ничего не значащей?

4. @Alex Golubenko пытался использовать разделение с регулярным выражением

Ответ №1:

Вот моя попытка, как я мог понять из вашего вопроса (позвольте мне ознакомиться с каждым вашим предложением).

Ваша строка:

 s = "ggSuQNs6TxOTuQDd0j 4sA==$QO/Mq2jwfe3jgsGGoIGmlg==" 
  

Шаг-1

Мне нужно преобразовать его в «ggSuQNs6TxOTuQDd0j4sAQOMq2jwfe3jgsGGoIGmlg» (только буквы и цифры).

только символы и цифры:

  > transform_string = s.tr('^A-Za-z0-9', '')
 #=> "ggSuQNs6TxOTuQDd0j4sAQOMq2jwfe3jgsGGoIGmlg" 
  

Шаг -2

Затем обрежьте его до 13 символов «ggSuQNs6TxOTu»

извлеките первые 13 символов следующим образом:

  > thirteen_chrs = transform_string[0..12]
 #=> "ggSuQNs6TxOTu" 
  

Шаг 3 (из вашего примера)

 number = 3242 
  

Шаг-4

после 3 символов — первая половина числа цифр, вставьте после 9 символов вторую половину числа цифр.

вот встроенный код для того же:

 > thirteen_chrs.insert(3, number.to_s.chars.each_slice(2).map(amp;:join).first).insert(9, number.to_s.chars.each_slice(2).map(amp;:join).last)
#=> "ggS3232uQ42Ns6TxOTu" 
  

Я надеюсь, что это может вам помочь 🙂