Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Замена символов


Автор: нуп 22.5.2011, 10:04
Есть набор символов, которые надо заменять.  Делаю так:
Код

function ConvertChars(s)
{
    var str = String(s);
    str = str.split("<").join("&lt;");
    str = str.split(">").join("&gt;");
    str = str.split("\n").join("\\n");
    return str;
}

Но таких символов будет много, и для каждого не хочется вызывать split >< Как можно сделать по другому? smile 

Автор: Stolzen 22.5.2011, 10:39
Вот так можно:

Код

<script>
    var a = ['>', '<', '-', '='];
    var b = ['&lt;', '&gt;', '--', '=='];
    
    var string = "asdf<sdfs=dfds>dsfsd=fsd<dfsdfs>-sdf-sdf=,,,<sdfs-df";
    
    for (var i = 0; i < a.length; ++i) {
        string = string.replace(new RegExp(a[i], "g"), b[i]);
    }
    
    alert(string);
</script>

Автор: нуп 24.5.2011, 01:51
Может как-то можно вызвать только 1-н раз replace и передать туда параметры?  smile  

Автор: Stolzen 24.5.2011, 06:53
Я думаю, в таком случае можно самому написать функцию, которая сама за один просмотр все заменит. 

Код

    var replace = function(string) {
        var d = {
            '>': '&lt;',
            '<': '&gt;',
            '\n': '\\n'
        };
        
        var build = [];
        
        for (var i = 0; i < string.length; ++i) {
            var ch = string[i];
            
            if (ch in d) {
                build.push(d[ch]);
            } else {
                build.push(ch);
            }
        }
        
        return build.join('');    
    };
    
    var string = "<a>\n</a>";
    alert(replace(string));

Автор: нуп 24.5.2011, 11:02
Да наверное надо самому писать, но хотелось бы чего-то стандартного  smile 

Автор: Котокобра 24.5.2011, 16:10
 smile 

Код

<script>

var str = "<adf>as2df<adsf>s1\ndaf<asd>1dsfa>dsaf";


var repStr = new Array();
repStr[60] = '&lt;'; repStr[62] = '&gt;'; repStr[10] = '\\n';
str = str.replace(/([<|>|\n])/g, function(x, y){return repStr[y.charCodeAt(0)]} );

document.body.innerHTML = str;

</script>


Автор: нуп 24.5.2011, 18:13
Как вариант. спс попробуем

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)