从 HTML 输入元素中解析特殊字符 (\n\t)
Parse special characters (\n\t) from HTML input element
我目前正在用纯 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
pears
实际输出:
Apples\npears
无论是转义(例如“\\n”),还是将输入提供给 String 对象 (replacementStr = new String(replacementStr)) 都无济于事。
非常感谢您的帮助!
我在想,既然你的警告框显示 \n 那么实际的字符串包含 \\n,没有其他办法该框将显示 \n.
也许在发出警报之前尝试将字符串中的所有 \\n 替换为 \n?也许这会解决你的问题。
如果这不起作用,请尝试在 html 中显示输出,看看是否有任何改变。可能是您使用的浏览器不支持提示框中的特殊字符。
普通输入字段不允许换行,并且不会以任何方式评估它们的值,这意味着如果用户输入 \n
,则不会将其转换为换行。
您可以手动替换所需的转义码:
replacementStr = replacementStr.replace(/\n/g, '\n')
对于JavaScript...
%0D
是编码后的 CR
%0A
是编码后的LF
%0D%0A
两个在一起[=13=]
我目前正在用纯 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
pears
实际输出:
Apples\npears
无论是转义(例如“\\n”),还是将输入提供给 String 对象 (replacementStr = new String(replacementStr)) 都无济于事。
非常感谢您的帮助!
我在想,既然你的警告框显示 \n 那么实际的字符串包含 \\n,没有其他办法该框将显示 \n.
也许在发出警报之前尝试将字符串中的所有 \\n 替换为 \n?也许这会解决你的问题。
如果这不起作用,请尝试在 html 中显示输出,看看是否有任何改变。可能是您使用的浏览器不支持提示框中的特殊字符。
普通输入字段不允许换行,并且不会以任何方式评估它们的值,这意味着如果用户输入 \n
,则不会将其转换为换行。
您可以手动替换所需的转义码:
replacementStr = replacementStr.replace(/\n/g, '\n')
对于JavaScript...
%0D
是编码后的 CR
%0A
是编码后的LF
%0D%0A
两个在一起[=13=]