하나 이상의 자리 표시자를 포함하는 문자열 (ASP.NET에서 제공)이 있습니다.어떻게 .NET 문자열 자리 표시자를 javascript의 실제 값으로 대체 할 수 있습니까?
var str = "aaa {0} bbb {1} ccc {2:0.0}";
var result = string.Format(str, new [] {1, 2, 33.123});
가 지금은 자바 스크립트에서 동일한 작업을 수행해야하지만, 나는 정규 표현식과 사투를 벌인거야 : .NET에서 나는 실제 값으로 자리를 대체하기 위해 인 String.format() 메소드를 사용하고 있습니다. 다음 함수는 "{0}"와 같은 간단한 자리에 잘 작동하지만 더 복잡한 같은 사람 "{3 : 0.0}"실패 복잡한 자리에 대한
function FormatString(txt, args) {
for (i = 0; i < args.length; i++) {
txt = txt.replace('{' + i + '}', args[i]);
}
return txt;
}
//e.g:
FormatString("aa {0} bb {1} cc", [1, 2]);
// returns "aa 1 bb 2 cc"
, 나는 이용할 수 있도록 기능을 수정하려고 정규식,하지만 지금까지 나는 일하는 RegExp를 생각해 내지 못했습니다. 이것은 내가 시도한 것입니다 :
function FormatString2(txt, args) {
for (i = 0; i < args.length; i++) {
txt = txt.replace(new RegExp('{' + i + '.*}'), args[i]);
}
return txt;
}
// does not work correctly, i.e:
FormatString2("aa {0:0.0} bb {1} cc", [1, 2]);
// returns "aa 1 cc" instead of "aa 1 bb 2 cc"
어떤 힌트를 적절하게 바꾸려면 어떻게합니까? (RegExp 사용). 나는 작동하는 것 같다 해결책을 찾은 것 같아요 좀 더 인터넷 검색 후
이미 포맷 된 문자열을 다시 전달할 수있는 방법이 있습니까? – hunter
@ 헌터 : 불행히도 안돼. 그렇지 않으면 나는 자바 스크립트와 정규식으로 싸우지 않을 것이다 :-) – M4N