자바 스크립트 DOM 텍스트 노드에서 교체
javascript를 사용하여 xhtml을 처리하고 있습니다. nodeType == Node.TEXT_NODE 인 모든 자식 노드의 nodeValue를 연결하여 div 노드에 대한 텍스트 콘텐츠를 얻습니다.
결과 문자열에는 간혹 구분되지 않는 공백 엔티티가 포함됩니다. 이것을 일반 공백 문자로 어떻게 대체합니까?
내 사업부는 다음과 같이 보입니다 ...
<div><b>Expires On</b> Sep 30, 2009 06:30 AM</div>
웹에서 찾은 다음 제안이 작동하지 않았습니다.
var cleanText = text.replace(/^\xa0*([^\xa0]*)\xa0*$/g,"");
var cleanText = replaceHtmlEntities(text);
var replaceHtmlEntites = (function() {
var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
var translate = {
"nbsp": " ",
"amp" : "&",
"quot": "\"",
"lt" : "<",
"gt" : ">"
};
return function(s) {
return ( s.replace(translate_re, function(match, entity) {
return translate[entity];
}) );
}
})();
어떤 제안?
이것은 당신이 만드는 것보다 훨씬 쉽습니다. 텍스트 노드에는 리터럴 문자열이 없으며 " "
코드 160에 해당하는 문자가 있습니다.
function replaceNbsps(str) {
var re = new RegExp(String.fromCharCode(160), "g");
return str.replace(re, " ");
}
textNode.nodeValue = replaceNbsps(textNode.nodeValue);
최신 정보
더 쉽게 :
textNode.nodeValue = textNode.nodeValue.replace(/\u00a0/g, " ");
교체 만 필요하다면
훨씬 더 간단한 정규식을 사용할 수 있습니다.
var textWithNBSpaceReplaced = originalText.replace(/ /g, ' ');
또한 div 예제에 오타가 있습니다 . &nnbsp;
대신
.
That first line is pretty messed up. It only needs to be:
var cleanText = text.replace(/\xA0/g,' ');
That should be all you need.
I think when you define a function with "var foo = function() {...};
", the function is only defined after that line. In other words, try this:
var replaceHtmlEntites = (function() {
var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
var translate = {
"nbsp": " ",
"amp" : "&",
"quot": "\"",
"lt" : "<",
"gt" : ">"
};
return function(s) {
return ( s.replace(translate_re, function(match, entity) {
return translate[entity];
}) );
}
})();
var cleanText = text.replace(/^\xa0*([^\xa0]*)\xa0*$/g,"");
cleanText = replaceHtmlEntities(text);
Edit: Also, only use "var
" the first time you declare a variable (you're using it twice on the cleanText
variable).
Edit 2: The problem is the spelling of the function name. You have "var replaceHtmlEntites =". It should be "var replaceHtmlEntities ="
i used this, and it worked:
var cleanText = text.replace(/&nbsp;/g,"");
var text = "" &<>";
text = text.replaceHtmlEntites();
String.prototype.replaceHtmlEntites = function() {
var s = this;
var translate_re = /&(nbsp|amp|quot|lt|gt);/g;
var translate = {"nbsp": " ","amp" : "&","quot": "\"","lt" : "<","gt" : ">"};
return ( s.replace(translate_re, function(match, entity) {
return translate[entity];
}) );
};
try this.....this worked for me
Removes everything between &
and ;
which all such symbols have. if you juts want to get rid of them.
text.replace(/&.*;/g,'');
for me replace doesn't work... try this code:
str = str.split(""").join('"');
ReferenceURL : https://stackoverflow.com/questions/1495822/replacing-nbsp-from-javascript-dom-text-node
'Development Tip' 카테고리의 다른 글
VIM에 대한 GoLang 구문 강조 표시 추가 (0) | 2021.01.09 |
---|---|
Autoconf 및 Autotools의 대안? (0) | 2021.01.09 |
IE에서 필터를 제거하려면 어떻게합니까? (0) | 2021.01.09 |
SSH를 통해 EC2 서버에 접속하면 오류가 발생합니다. 루트 사용자가 아닌 ec2-user 사용자로 로그인하십시오. (0) | 2021.01.09 |
리퍼러를 목적지로 보내는 링크 중지 (0) | 2021.01.09 |