子字符串和拆分

时间:2018-11-14 11:18:25

标签: ruby string

我有很多这样的消息格式

"42[\"message\",\"base64:QWZ0ZXIgQnVuZGxlciBpbnN0YWxscyB0aGUgZ2VtcyBpbiB5b3VyIEdlbWZpbGUsIHlvdSBjYW4gcHJvY2VlZCB0byByZWZlcmVuY2UgdGhlbSBpbiA0eTQ0NG91ciBjb2RlIGp1c3QgYXMgaWYgeW914oCZZCBpbnN0YWxsZWQgdGhlbSB5b3Vyc2VsZi4=\"]"

我想做的是如果消息包含base64:然后在冒号之后和下一个引号之前提取子字符串。

编辑:这可行,但可能很可怕。

if event.data.include? 'base64:'
    new_string = event.data[event.data.rindex("base64:") + "base64:".length..-3]
    puts new_string
end

1 个答案:

答案 0 :(得分:0)

message = "42[\"message\",\"base64:QWZ0ZXIgQnVuZGxlciBpbnN0YWxscyB0aGUgZ2VtcyBpbiB5b3VyIEdlbWZpbGUsIHlvdSBjYW4gcHJvY2VlZCB0byByZWZlcmVuY2UgdGhlbSBpbiA0eTQ0NG91ciBjb2RlIGp1c3QgYXMgaWYgeW914oCZZCBpbnN0YWxsZWQgdGhlbSB5b3Vyc2VsZi4=\"]"
base64 = message[/base64:(.+?)"/, 1]
puts(Base64.decode64(base64)) unless base64.nil?
相关问题