2015-02-07 2 views
-1

) replace() 함수가 ul 코드로 §를 대체하려고 시도 할 때 머리가 긁히는 문제를 파악하려고합니다. 이 % s는 잘 작동 var replaced = str.replace(/%s/g, "<span style='width:15px;height:10px;'>&#160;</span>").replace(/§/g, "u/00a7")replace() 및 § JavaScript 문제 (

그래서 그 두 배의 자체가 제대로 작동하지 생각 :

여기에 코드입니다. 나는이와 함께 갔다 그래서 결국 대체하는 이중의를 가져올 수 없습니다 결국을 : : 감사합니다

솔루션은 내가 사용 &#92;u00a7 그것은

답변

1

"u/00a7"은 정확히 그 자 마법처럼 일했다 JavaScript. 아마도 "\u00a7"을 의미했을 것입니다. 그러나 §"\u00a7"으로 바꾸는 것은 의미가 없으며 동일한 문자입니다. 당신이 HTML 엔티티로 교체하는 것을 의미하는 경우, 그 &#167; 다음과 같습니다

var s = "See §123"; 
 

 
// Replace 
 
s = s.replace(/§/g, "&#167;"); 
 

 
// Display WITHOUT letting the browser interpret the entity 
 
var p = document.createElement('pre'); 
 
if ('textContent' in p) { 
 
    p.textContent = "Not interpreted: " + s; 
 
} else { 
 
    p.innerText = "Not interpreted: " + s; 
 
} 
 
document.body.appendChild(p); 
 

 
// Display WITH the browser interpreting the entity (so we'll see §) 
 
p = document.createElement('pre'); 
 
p.innerHTML = "Interpreted: " + s; 
 
document.body.appendChild(p);
...하지만 단지 가진 § 말 그대로 잘해야한다. 문자 인코딩 문제가있는 경우에도 (그리고이 경우가 아니라이를 해결하려는 경우) § 모든 인기있는 인코딩에서 동일한 문자입니다 ...

+0

예 그러나 그것은 여전히 ​​S를 대체하지 않습니다. – Scar

+0

@ 스카 : 그렇습니다. 당신의 코드에서, 당신은'replace'에서 대체물을 발견 할 것입니다 ('str'이 아님). 물론, 문자열을 HTML로 해석하는 것으로 출력하면, 그것을 해석하는 것은 문자 엔티티를 해석하기 때문에 §로 표시됩니다 (그 대신 위의'textContent' /'innerText'를 사용했습니다). –

+0

나는 약간의 코드를 수정했는데 여기서는 작동하지 않는 것 같지 않다. http://pastebin.com/PX2nBgAv 다른 페이지에서 전달 된 데이터를 추출하고 url 포맷팅이 문제가되는지 궁금하다. double S가 % A7처럼 보입니다. – Scar