Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/440.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从HTML输入元素解析特殊字符(\n\t)_Javascript_String_Tabstop - Fatal编程技术网

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

Javascript 从HTML输入元素解析特殊字符(\n\t),javascript,string,tabstop,Javascript,String,Tabstop,我目前正在用纯JS(无jQuery)编写一个实用程序,它对给定的输入文本执行字符串替换:它查找字符串的出现并用另一个字符串替换它们。为此,我希望允许用户在元素中指定所需的替换字符串 但是,如果用户输入特殊字符,例如换行符(\n)或制表符(\t),这些字符将不会被解释为实际的换行符或制表符,而是被解释为文字字符串“\n”和“\t” 以下是我的代码,简要地说明了问题: <!DOCTYPE html> <html> <head> <script typ

我目前正在用纯JS(无jQuery)编写一个实用程序,它对给定的输入文本执行字符串替换:它查找字符串的出现并用另一个字符串替换它们。为此,我希望允许用户在元素中指定所需的替换字符串

但是,如果用户输入特殊字符,例如换行符(\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\npears
转义(例如“\\n”)或将输入馈送到字符串对象(replacementStr=newstring(replacementStr))都不会起任何作用


如果您能帮上忙,我们将不胜感激

我认为,由于警报框显示\n而实际字符串包含\\n,因此该框没有其他显示方式

可能在发出警报之前尝试将字符串中的所有\\n替换为\n?也许这会解决你的问题


如果这不起作用,请尝试用html显示输出,看看这是否会改变什么。可能您使用的浏览器不支持警报框中的特殊字符。

普通输入字段不允许换行,并且不会以任何方式计算其值,这意味着如果用户输入
\n
,则不会将其转换为换行符

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

replacementStr = replacementStr.replace(/\\n/g, '\n')
对于JavaScript

%0D
是编码的CR

%0A
是编码的LF

%0D%0A
将两者结合在一起

replacementStr = replacementStr.replace(/\\n/g, '\n')