2012-04-20 3 views

답변

9

이 예는 다음과 같습니다 alert(String.fromCharCode(8364));

여기서 8364는 HTML 엔터티의 번호입니다.

"The price of milk is now €100000.".replace(/&#(\d{0,4});/g, function(fullStr, str) { return String.fromCharCode(str); }); 

마법은 여기에 발생합니다 :

replace(/&#(\d{1,4});/g, function(fullStr, code) { return String.fromCharCode(code); });

첫 번째 인수하는 것은 대체

가 자동으로 다음이 정규 표현식 교체 예를 사용해야합니다 텍스트의 몸 전체를 교체하려면 /&#(\d{1,4});/g은 & #으로 둘러싸인 1 ~ 4 자릿수를 지정하고, 각기. 두 번째 매개 변수 function(fullStr, code) [...]은 대체를 수행합니다. 여기서 code은 숫자입니다.

+0

이것은 첫 번째 발생 만 대체합니다. 문자열의 여러 문자 코드와 일치하도록이 방법을 확장 할 수 있습니까? – darudude

+0

@darudude 그냥 정규 표현식 끝에 "g"플래그를 추가하여 욕심을 부려보세요 : regex regex regex replace (regex/g, 'bacon');'-> 'bacon bacon bacon' –

+0

lol 나는 바보 야. 내가 어떻게 그것을 놓쳤는지 모르겠다. 윌에게 감사드립니다! – darudude

2
document.getElementById("myElement").innerHTML = "&#8364".fromCharCode(); 

은의 fromCharCode() 기능은 String 객체에서만 사용할 수 있음을 긁어, 그래서 윌 모건는 말과 같습니다

document.getElementById("myElement").innerHTML = String.fromCharCode(8364) 
3

innerHTML을 통해 브라우저의 내장 HTML 구문 분석기를 사용할 수 있습니다. 이는 숫자가 아닌 모든 HTML 항목을 처리 할 수 ​​있다는 장점이 있습니다. 함수에 전달 된 문자열에 HTML 태그가 포함되어 있으면 다음은 작동하지 않습니다.

function convertEntities(html) { 
    var el = document.createElement("div"); 
    el.innerHTML = html; 
    return el.firstChild.data; 
} 

var html = "€ ► ♠ " &"; 
var text = convertEntities(html); // € ► ♠ " & 
관련 문제