Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 27.11.2012, 18:41
Интересующийся
Отправить личное сообщение для Lexi Посмотреть профиль Найти все сообщения от Lexi
 
Регистрация: 14.03.2009
Сообщений: 29

Заменить escape-последовательность на сами символы
Ну т.е. "\n" на "\\n" и т.п. Вопрос в основном в том, можно ли это сделать проще/короче, не переписывая их список как на http://stackoverflow.com/questions/3...cape-sequences

Пока я изобразил что-то такое:
var ret = '', i = 0, obj = {'\b': '\\b', };
while(chr = str.charAt(i++)){
    ret += obj[chr] || chr;
}

Последний раз редактировалось Lexi, 27.11.2012 в 18:57.
Ответить с цитированием
  #2 (permalink)  
Старый 28.11.2012, 05:37
Аспирант
Посмотреть профиль Найти все сообщения от Atae
 
Регистрация: 27.11.2012
Сообщений: 61

Сообщение от Lexi
Заменить escape-последовательность на сами символы
што?

это штоле?
alert( '\b' )

alert( JSON.stringify('\b') )
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2012, 15:35
Интересующийся
Отправить личное сообщение для Lexi Посмотреть профиль Найти все сообщения от Lexi
 
Регистрация: 14.03.2009
Сообщений: 29

Скорее toSource/uneval, т.к потребовались и функции.
В итоге, по мотивам stringify изобразил нечто подобное:
var toSrc = function (obj) {
    var strToSrc = function (str) {
        var chr, ret = '', i = 0, meta = {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'};
        while(chr = str.charAt(i++)){
            ret += meta[chr] || chr;
        };
        return '"' + ret + '"';
    };
    var arrToSrc = function (arr) {
        var ret = [];
        for (var i = 0; i < arr.length; i++) {
            ret[i] = toSrc(arr[i]) || 'null';
        };
        return '[' + ret.join(',') + ']';
    };
    var objToSrc = function (obj) {
        var val, ret = [];
        for (var prop in obj) {
            if (obj.hasOwnProperty(prop)) {
                if (val = toSrc(obj[prop])) ret.push(strToSrc(prop) + ': ' + val);
            }
        };
        return '{' + ret.join(',') + '}';
    };
    switch (Object.prototype.toString.call(obj).slice(8, -1)) {
        case 'Array': return arrToSrc(obj);
        case 'Boolean':
        case 'Function':
        case 'RegExp': return obj.toString();
        case 'Date': return 'new Date(' + obj.getTime() + ')';
        case 'Math': return 'Math';
        case 'Number': return isFinite(obj) ? String(obj) : 'null';
        case 'Object': return objToSrc(obj);
        case 'String': return strToSrc(obj);
        default: return obj ? '{}' : 'null';
    }
};
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Заменить символы в строке, затем преобразовать строку в html majahead jQuery 2 03.03.2011 16:52
Заменить символы в строке artlayers jQuery 5 17.03.2010 18:54