2015-05-27 4 views
1

я могу Получать эти две строк:проверить, если строка base64

base = Base64.encode64(File.open("/home/usr/Desktop/test", "rb").read) 
    => "YQo=\n" 

    string = File.open("/home/usr/Desktop/test", "rb").read 
    => "a\n" 

то, что я пытался до сих пор, чтобы проверить строку с регулярным выражением я-е. /([A-Za-z0-9+\/]{4})*([A-Za-z0-9+\/]{4}|[A-Za-z0-9+\/]{3}=|[A-Za-z0-9+\/]{2}==$)/, но это было бы очень тяжело, если файл большой.

Я также пробовал base.encoding.name и string.encoding.name, но оба возвращаются одинаково.

Я также видел this post и получил решение для регулярной выражения, но любое другое решение?

Любая идея? Я просто хочу, чтобы это строка на самом деле текст или текст в формате base64 ....

+2

возможно дубликат [Как проверить, закодирована ли строка base64 или нет) (http://stackoverflow.com/questions/8571501/how-to-check-whether-the-string-is-base64-encoded-or-not) –

+0

, пожалуйста, прочитайте вопрос снова, я обновил. я уже видел это сообщение –

+1

«но это было бы очень тяжело, если файл большой». К сожалению, нет другого способа узнать. Является ли это предложение действительным английским skagpoople? Вы не знаете, пока не найдете в нем что-то, что говорит вам, что это не так. Это не то же самое «кодирование», что отчеты «String # encoding» - это кодировка символов, а не формат файла, который вас интересует. – Amadan

ответ

0

Вы можете использовать что-то вроде этого, не очень производительного, но вы гарантированно не получить ложные срабатывания:

require 'base64' 

def base64?(value) 
    value.is_a?(String) && Base64.encode64(Base64.decode64(value)) == value 
end 
Смежные вопросы