从红宝石线中删除额外和不允许的字符

时间:2016-10-06 10:08:06

标签: ruby-on-rails ruby

有一行:ggSuQNs6TxOTuQDd0j+4sA==$QO/Mq2jwfe3jgsGGoIGmlg==。我需要 将其转换为ggSuQNs6TxOTuQDd0j4sAQOMq2jwfe3jgsGGoIGmlg(仅限字母和数字)。然后将其修剪为13个字符ggSuQNs6TxOTu并在3个符号后面粘贴数字的前半部分数字,粘贴在9个符号后半部分数字的数字之后。例如,考试编号为3243,字符串为ggSuQNs6TxOTu。在有ggS32uQNs436TxOTu

之后

我的英语很差),我希望你能理解我。

1 个答案:

答案 0 :(得分:0)

这是我的尝试,因为我可以从你的问题中理解(让我完成你的每个句子)。

你的字符串:

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(&:join).first).insert(9, number.to_s.chars.each_slice(2).map(&:join).last)
#=> "ggS3232uQ42Ns6TxOTu" 

我希望这可以帮助你:)