如何将身体中的数字替换为波斯数字?

Ali*_*a41 25 html javascript jquery

我想将html内容上的每个数字转换为波斯数字而不影响页面元素.

例如:

<div style='color: #c2c2c2'>
  text number 1
  <span>text number 2</span>
  <div>
    text number 3
    <b>text number 4</b>
    <a href='#page2'>text number 5</a>
   </div>
</div>
Run Code Online (Sandbox Code Playgroud)

转换成 :

  <div style='color: #c2c2c2'>
  text number ?
  <span>text number ?</span>
  <div>
    text number ?
    <b>text number ?</b>
    <a href='#page2'>text number ?</a>
   </div>
</div>

persian = array('?', '?', '?', '?', '?', '?', '?', '?', '?', '?');
english = array('0', '1', '2', '3', '4', '5', '6', '7', '8', '9');
Run Code Online (Sandbox Code Playgroud)

谢谢.

hai*_*aka 27

您可以使用此方法:(http://jsfiddle.net/A4NfG/1/)

persian={0:'?',1:'?',2:'?',3:'?',4:'?',5:'?',6:'?',7:'?',8:'?',9:'?'};
function traverse(el){
    if(el.nodeType==3){
        var list=el.data.match(/[0-9]/g);
        if(list!=null && list.length!=0){
            for(var i=0;i<list.length;i++)
                el.data=el.data.replace(list[i],persian[list[i]]);
        }
    }
    for(var i=0;i<el.childNodes.length;i++){
        traverse(el.childNodes[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

  • 糟糕,我没有在el.data.match(/ [0-9] /)中添加'g'参数;我在帖子中给出的jsfiddle链接上。我更新了。检查它:http://jsfiddle.net/A4NfG/1/ (3认同)

Sjo*_*erd 6

此示例将替换整个页面中的数字:

function walkNode(node) { 
    if (node.nodeType == 3) {
        // Do your replacement here
        node.data = node.data.replace(/\d/g,convert);
    }

    // Also replace text in child nodes
    for (var i = 0; i < node.childNodes.length; i++) {
        walkNode(node.childNodes[i]); 
    }
}

walkNode(document.getElementsByTagName('body')[0]);

function convert(a){
    return ['?', '?', '?', '?', '?', '?', '?', '?', '?', '?'][a];
}
Run Code Online (Sandbox Code Playgroud)


Nav*_*adi 5

如果你想用a选择一些元素selector,你可以使用这个简单的代码(JsFiddle):

persian={0:'?',1:'?',2:'?',3:'?',4:'?',5:'?',6:'?',7:'?',8:'?',9:'?'};
$(".persian-digit").each(function(){
    for(var i=0;i<=9;i++) {
        var re = new RegExp(i,"g");
        $(this).html($(this).html().replace(re,persian[i]));
    }
});
Run Code Online (Sandbox Code Playgroud)

然后使用它:

<span class="persian-digit">This span contains persian digits (0123456789),</span>
<span>and this one contains english digits (0123456789).</span>
Run Code Online (Sandbox Code Playgroud)


mcr*_*nix 5

我写了这段简短的代码。

\n\n

\r\n
\r\n
// ES6\r\nconst regex = /[\xdb\xb0-\xdb\xb9]/g\r\nlet str = \'\xdb\xb0\xdb\xb1\xdb\xb2\xdb\xb3\xdb\xb5\xdb\xb4\xdb\xb8\xdb\xb9\xdb\xb0\xdb\xb7\xdb\xb8\xdb\xb9\xdb\xb0\xdb\xb1\xdb\xb2\';\r\nlet result = str.replace(regex, function (w) {\r\n    return String.fromCharCode(w.charCodeAt(0) - 1728)\r\n  }\r\n)\r\n\r\nconsole.log(result);
Run Code Online (Sandbox Code Playgroud)\r\n
\r\n
\r\n

\n