我有很多这样的消息格式
"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
答案 0 :(得分:0)
message = "42[\"message\",\"base64:QWZ0ZXIgQnVuZGxlciBpbnN0YWxscyB0aGUgZ2VtcyBpbiB5b3VyIEdlbWZpbGUsIHlvdSBjYW4gcHJvY2VlZCB0byByZWZlcmVuY2UgdGhlbSBpbiA0eTQ0NG91ciBjb2RlIGp1c3QgYXMgaWYgeW914oCZZCBpbnN0YWxsZWQgdGhlbSB5b3Vyc2VsZi4=\"]"
base64 = message[/base64:(.+?)"/, 1]
puts(Base64.decode64(base64)) unless base64.nil?