使用JavaScript将Escaped Literals转换为Specials

时间:2011-03-22 21:30:58

标签: javascript escaping

我想要一个文本输入,用户可以输入特殊字符,例如 \ n 。 但是当我尝试在输入中获取值时,我得到了转义字符串。我需要消除价值或任何变通方法吗?

编辑:我举了一个例子http://jsfiddle.net/9hmHr/

2 个答案:

答案 0 :(得分:1)

你是说这个吗?

<textarea id="x">hello\ndolly</textarea>
<button onclick="alert(document.getElementById('x').value.replace(/\\n/g,'\n'))">Click</button>

Demo forked from your code

var str = 'aaasddd';

alert(
  str.replace('s', 
    $('#my').val().replace(/\\n/g,'\n')
  )
);

答案 1 :(得分:0)

我找了一个有趣的方法,在搜索了一个更全面的解决方案之后做了这个,没有涉及用它的字面形式替换每个字符。

var x = "\\thello\\n\\tworld",
    y = JSON.parse(
        JSON.stringify(x).replace(/\\\\/g,'\\')
    );

console.log("Original:");
console.log(x);

console.log("Literal:");
console.log(y);

以上输出:

Original:
\thello\n\tworld

Literal:
    hello
    world

我希望这有帮助!

注意:这可能不适用于可能包含大括号({})的字符串,因为它可能会尝试将其转换为对象字面值。您可以通过“填充”大括号的转义字符来避免这种情况。 (例如,将"\{"更改为"\\\{"