길이가 단 하나의 요소 인 배열과 루프를 통해 검색/바꾸기를 수행하는 문자열이 있습니다.String.replace() 메서드의 익명 함수 사용
for (i; i < r; i += 1) {
str.replace(rex[i], function(star, p1, p2) {
console.log(i, star, p1, p2);
return p1 + '\\s*(.*)\\s*' + p2;
});
}
결과는 i am*\\s*(.*)\\s*happy all the\\s*(.*)\\s*time
을해야한다 :
var str = "i am*happy all the*time",
rex = [
/(\S)\s*\*\s*(\S)/g
],
i = 0,
r = rex.length;
이 나는 순간에 이것을 달성하기 위해 노력하고있어 방법이다. 하지만 지금은 str
이 영향을받지 않는 것으로 보입니다. 콘솔을 확인해도 관련성이 높은 일치가 만들어지고 있습니다. 너 자신을 위해 이것을 볼 수있다 here.
그래서 나는 간단한 것을 놓치고, String.replace()에서 람다 식을 사용하는 것에 대해 오해 한 적이 있습니까? 아니면 여기에 근본적으로 잘못된 것이 있습니까?
...
EXTRA 정보 : 관심의 경우 내가 지금 크롬 24을 사용하고 있습니다; 나는 얼마 전에 String.replace()의 익명의 함수를 모든 브라우저에서 사용할 수 없다는 것을 읽었지만 지금까지는 해결 될 것이라고 생각했다. (옵션은 ECMAScript v3에서 소개되었다.)
JS 문자열은 변경 불가능하며 함수 *는 새 문자열을 반환합니다. – Bergi
Btw, 그 함수 대신'$ 1 \\ s * (. *) \\ s * $ 2 "' – Bergi
@Bergi 감사합니다. 문자열 대안을 알고 있었지만 더 복잡한 기능으로 주위를 돌고 있습니다. 그냥 기본을 바로 얻고 싶었습니다. – guypursey