내가 레일에 루비에 너무 많은 간단한 기능의 존재를 그리워 매개 변수 당신이 uggly 하드 코드를 만드는 많은 문자열을 요약해야 자바 스크립트에서자바 스크립트 문자열은
"the key '%{key}' has a value of '%{value}'" % {:key => 'abc', :value => 5}
쓰다.
거기에 좋은 라이브러리가 있습니까? 나는 sprintf와 같은 것에 관심이 없다.
내가 레일에 루비에 너무 많은 간단한 기능의 존재를 그리워 매개 변수 당신이 uggly 하드 코드를 만드는 많은 문자열을 요약해야 자바 스크립트에서자바 스크립트 문자열은
"the key '%{key}' has a value of '%{value}'" % {:key => 'abc', :value => 5}
쓰다.
거기에 좋은 라이브러리가 있습니까? 나는 sprintf와 같은 것에 관심이 없다.
String.prototype.format = function(obj) {
return this.replace(/%\{([^}]+)\}/g,function(_,k){ return obj[k] });
};
"the key '%{key}' has a value of '%{value}'".format({ key:'abc', value:5 });
네이티브 "".format가 doug crockford에 의해 ecma6에 대한 docket에 있기 때문에 다른 어떤 것으로 불러야합니다 ... – dandavis
당신은 기본 배열 형 포맷터 만들 수 :
String.prototype.format = function(args) {
var str = this,
idxRx = new RegExp("{[0-9]+}", "g");
return str.replace(idxRx, function(item) {
var val = item.substring(1, item.length - 1),
intVal = parseInt(val, 10),
replace;
replace = args[intVal];
return replace;
});
};
사용법 :
'{1} {0} and {2}!'.format(["collaborate", "Stop", "listen"])
// => 'Stop collaborate and listen!'
모든 것을'return this.replace (/ \ {(\ d +) \} '로 줄일 수 있습니다./g, function (_, n) {return args [+ n]});'. 보통 당신은'arguments' 배열을 사용하여이 작업을 수행 할 수 있습니다. 따라서 무한 개수의 인수를 전달하고 추가 배열을 사용하는 대신 자리 표시 자에 매핑 할 수 있습니다. – elclanrs
무엇 [수염]와 같은 템플릿 엔진 (약 https://github.com/를 janl/mustache.js)? – bfavaretto
이것은 미세 최적화 문제입니다. 내 생각에 좀 더 구체적인 것에 집중하십시오. –
[밑줄 템플릿] (http://underscorejs.org/#template)이 있지만 과장 될 수 있습니다. – Andbdrew