JavaScript 코드를 MicrosoftAjax에서 JQuery로 옮기려고합니다. String.format (), String.startsWith () 등과 같이 널리 사용되는 .net 메소드의 MicrosoftAjax에서 JavaScript 등가물을 사용합니다. jQuery에도 이와 동등한 것이 있습니까?
답변
ASP.NET AJAX 의 소스 코드는 참조 용으로 제공되므로이를 선택하여 계속 사용하려는 부분을 별도의 JS 파일에 포함시킬 수 있습니다. 또는 jQuery로 이식 할 수 있습니다.
포맷 기능은 다음과 같습니다.
String.format = function() {
var s = arguments[0];
for (var i = 0; i < arguments.length - 1; i++) {
var reg = new RegExp("\\{" + i + "\\}", "gm");
s = s.replace(reg, arguments[i + 1]);
}
return s;
}
그리고 여기 프로토 타입 함수로 끝과 끝이 있습니다 …
String.prototype.endsWith = function (suffix) {
return (this.substr(this.length - suffix.length) === suffix);
}
String.prototype.startsWith = function(prefix) {
return (this.substr(0, prefix.length) === prefix);
}
답변
이것은 Josh가 게시 한 기능의 더 빠르고 간단하고 프로토 타입입니다.
String.prototype.format = String.prototype.f = function() {
var s = this,
i = arguments.length;
while (i--) {
s = s.replace(new RegExp('\\{' + i + '\\}', 'gm'), arguments[i]);
}
return s;
};
용법:
'Added {0} by {1} to your collection'.f(title, artist)
'Your balance is {0} USD'.f(77.7)
나는 이것을 너무 많이 사용하여 별명을 지정 f
했지만 더 자세한 정보를 사용할 수도 있습니다 format
. 예 :'Hello {0}!'.format(name)
답변
Julian Jelfs를 제외한 위의 많은 함수에는 다음 오류가 포함되어 있습니다.
js> '{0} {0} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 3.14 afoobc foo
또는 인수 목록 끝에서 거꾸로 계산되는 변형의 경우 :
js> '{0} {0} {1} {2}'.format(3.14, 'a{0}bc', 'foo');
3.14 3.14 a3.14bc foo
다음은 올바른 기능입니다. Julian Jelfs 코드의 프로토 타입 변형으로 조금 더 빡빡했습니다.
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{(\d+)\}/g, function (m, n) { return args[n]; });
};
그리고 여기에 약간 더 고급 버전이 있으며 중괄호를 두 배로 늘릴 수 있습니다.
String.prototype.format = function () {
var args = arguments;
return this.replace(/\{\{|\}\}|\{(\d+)\}/g, function (m, n) {
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return args[n];
});
};
이것은 올바르게 작동합니다 :
js> '{0} {{0}} {{{0}}} {1} {2}'.format(3.14, 'a{2}bc', 'foo');
3.14 {0} {3.14} a{2}bc foo
다음은 Blair Mitchelmore의 또 다른 좋은 구현입니다. https://web.archive.org/web/20120315214858/http://blairmitchelmore.com/javascript/string.format
답변
컬렉션이나 배열을 인수로 취하는 형식 함수를 만들었습니다.
용법:
format("i can speak {language} since i was {age}",{language:'javascript',age:10});
format("i can speak {0} since i was {1}",'javascript',10});
암호:
var format = function (str, col) {
col = typeof col === 'object' ? col : Array.prototype.slice.call(arguments, 1);
return str.replace(/\{\{|\}\}|\{(\w+)\}/g, function (m, n) {
if (m == "{{") { return "{"; }
if (m == "}}") { return "}"; }
return col[n];
});
};
답변
jQuery.validator.format과 같은 공식 옵션이 있습니다.
jQuery Validation Plugin 1.6 (적어도)과 함께 제공됩니다. .NET
에서 String.Format
발견 된 것과 매우 유사합니다 .
편집 깨진 링크를 수정했습니다.
답변
유효성 검사 플러그인을 사용하는 경우 다음을 사용할 수 있습니다.
jQuery.validator.format("{0} {1}", "cool", "formatting") = 'cool formatting'
http://docs.jquery.com/Plugins/Validation/jQuery.validator.format#templateargumentargumentN …
답변
Q가 요구하는 것과 정확히 일치하지는 않지만 비슷하지만 번호가 아닌 명명 된 자리 표시자를 사용하는 것을 만들었습니다. 나는 개인적으로 명명 된 인수를 선호하고 객체를 인수로 보내면됩니다 (더 자세하지만 유지하기가 더 쉽습니다).
String.prototype.format = function (args) {
var newStr = this;
for (var key in args) {
newStr = newStr.replace('{' + key + '}', args[key]);
}
return newStr;
}
사용법 예는 다음과 같습니다.
alert("Hello {name}".format({ name: 'World' }));
