Есть ли в Java эквивалент для Ruby's Digest :: MD5.base64digest? - PullRequest
0 голосов
/ 20 сентября 2019

Я хотел бы преобразовать код Ruby в Java.Все хорошо, кроме строки:

digest = Digest::MD5.base64digest("#{width} #{height} #{unescaped_path} #{salt}")
digest.tr!('+/', '-_')
digest.tr!('=', '')

Как бы этот кусок кода выглядел одинаково в Java?Я думаю, что это будет что-то вроде

digest = Base64.getDecoder().decode(width + " " + height + unescaped_path + salt);

, однако, tr! для меня неясно.Похоже, что-то вроде replace, но я не уверен.

1 Ответ

1 голос
/ 20 сентября 2019

Метод tr имеет два режима.Во-первых, он отображает символы в наборе A на символы в наборе B:

"ABBA".tr('ABC', 'DEF')
# => "DEED"

Это требует отображения строк одинаковой длины.Если сторона замены пуста, то экземпляры символов в соответствующем наборе удаляются:

"ABBA".tr('A', '')
# => "BB"

tr! - версия на месте tr, но работает так же.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...