sprintf

by Artem

JavaScript

'use strict';

const sprintf = (format, num, str) => {
  var numRe = /\d+/g;
  var strRe = /[a-zA-Z]+/g;

  var mapRe = {
    '%d': numRe,
    '%s': strRe,
  };

  const getRe = (val) => {
    if (typeof val === 'number') {
      return mapRe['%d'];
    }

    if (typeof val === 'string') {
      return mapRe['%s'];
    }
  };

  return [num, str].reduce((acc, next) => {
    return format.replace(getRe(next), next);
  }, format);
}


var num = 5;
var location = 'дереве';
var format = '%d обезьян сидят на %s';

console.log(format, num, location);