Заменить ключи хеша его значением внутри определенной группы соответствующего регулярного выражения

Так я могу это выполнить. Странное изменение window.location не получилось отлично в хроме и сафари. Случается, что location.hash не создает запись в истории для хрома и сафари. Таким образом, вам придется использовать pushstate. Это работает для меня во всех браузерах.

    history.pushState({ page: 1 }, "title 1", "#nbb");
    window.onhashchange = function (event) {
        window.location.hash = "nbb";

    };
-3
задан sawa 5 March 2019 в 07:39
поделиться

1 ответ

Я думаю, что вы можете быть после следующего, но, пожалуйста, скажите мне, если я ошибаюсь.

def replace_em(str, h)
  str.gsub(/\S+/, Hash.new { |_,k| k }.merge(h))
end

h = { 'k1'=>'v1', 'k2'=>'v2' }
str = "Now is the k1 for all good persons to k2 to their friend k11"

replace_em(str, h)
  #=> "Now is the v1 for all good persons to v2 to their friend k11"

/\S+/ соответствует строкам символов, которые не содержат пробелов.

g = Hash.new { |_,k| k } 

создает пустой хеш с процедурой по умолчанию , которая заставляет g[k] возвращать k, если g не имеет ключа k.

g.merge(h)

возвращает хэш с процедурой по умолчанию, только что созданной с ключами и значениями из h.

См. Документ для формы Hash :: new , которая принимает второй аргумент, который является хешем.

0
ответ дан Cary Swoveland 5 March 2019 в 07:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: