从HTML输入元素中解析特殊字符(\ n \ t)

时间:2018-01-13 22:11:19

标签: javascript string tabstop

我目前正在用纯JS(没有jQuery)编写一个实用程序,它在给定的输入文本上执行字符串替换:它查找字符串的出现并用另一个替换它们。为此,我想允许用户在< input>内指定所需的替换字符串。元件。

但是,如果用户输入特殊字符,例如换行符(\ n)或制表位(\ t),则不会将这些字符解释为实际的换行符或制表位,而是作为文字字符串“\ n”和“\ t”。

这是我的代码,简而言之是澄清问题:

<!DOCTYPE html>
<html>
<head>
    <script type="text/javascript">
        function run() {
            var inputStr = document.getElementById("inputStr").value;
            var searchStr = document.getElementById("searchStr").value;
            var regExp = new RegExp(searchStr, "g");
            var replacementStr = document.getElementById("replacementStr").value;
            alert(inputStr.replace(regExp, replacementStr));
        }
    </script>
</head>
<body>
    <label>Input string:</label> 
    <input id="inputStr" type="text" value="Apples and pears"><br>

    <label>Look for this:</label>
    <input id="searchStr" type="text" value=" and "><br>

    <label>Replace with this:</label>
    <input id="replacementStr" type="text" value="\n"><br>

    <button onclick="run()">Go!</button>
</body>
</html>

预期产出:

Apples
pears

事实上的输出:

Apples\npears

转义(例如“\\ n”),也不将输入提供给String对象(replacementStr = new String(replacementStr))都不会做任何事情。

非常感谢一些帮助!

3 个答案:

答案 0 :(得分:2)

普通输入字段不允许换行,并且不会以任何方式评估它们的值,这意味着如果用户输入void,则不会将其转换为换行符。

您可以手动替换所需的转义码:

\n

答案 1 :(得分:0)

我在想,由于你的警告框显示 \ n ,那么实际的字符串包含 \\ n ,没有其他方式框会显示 \ ñ

也许在警告之前尝试用字符串中的 \ n 替换所有 \\ n ?也许这会解决你的问题。

如果这不起作用,请尝试在html中显示输出,看看是否有任何改变。也许您使用的浏览器不支持警报框中的特殊字符。

答案 2 :(得分:0)

对于JavaScript ......

%0D是已编码的CR

%0A是编码的LF

%0D%0A两人在一起。