javascript - 如何在 HTML 中将换行符显式显示为“\n”
问题描述
解决方案
.replace
不会改变现有字符串 - 您需要以某种方式使用结果表达式,例如将其与print
您正在创建的屏幕连接。
要将换行符替换为\n
,请搜索换行符/\n/g
并替换为\\n
(文字反斜杠,后跟文字n
)。
您还应该将"
s替换为\"
:
set(output, `print("${input.value.replace(/\n/g, '\\n').replace(/"/g, '\\"')}")`);
function set(el, text) {
while (el.firstChild) el.removeChild(el.firstChild);
el.appendChild(document.createTextNode(text))
}
/* setupUpdater will be called once, on page load.
*/
function setupUpdater() {
var input = document.getElementsByTagName('textarea')[0],
output = document.getElementsByTagName('textarea')[1],
timeout = null;
function handleChange() {
set(output, `print("${input.value.replace(/\n/g, '\\n').replace(/"/g, '\\"')}")`);
}
/* eventHandler is called on keyboard and mouse events.
If there is a pending timeout, it cancels it.
It sets a timeout to call handleChange in 0ms. */
function eventHandler() {
if (timeout) clearTimeout(timeout);
timeout = setTimeout(handleChange, 0);
}
input.onkeydown = input.onkeyup = input.onclick = eventHandler;
}
setupUpdater();
document.getElementsByTagName('textarea')[0].focus();
<div class="grid-container">
<textarea name="plainText" id="plainText" cols="40" rows="40" placeholder="Enter your plain text here">foo"bar</textarea>
<textarea name="plainText" id="plainText" cols="40" rows="40" readonly>print("")</textarea>
</div>
推荐阅读
- entity-framework - Azure 函数中实体框架的连接字符串
- typescript - 如何在 TypeScript 中为函数参数设置参数名称和类型?
- ios - VERBOSE-2:Platform_view_layer.cc(28) - 尝试嵌入平台视图,但 PaintContext 不支持嵌入
- react-native - 使用 React Native 向特定用户推送通知
- ios - 在 Swift 中用手轻扫平滑解雇
- reactjs - 如何使用单元格渲染器中的按钮删除 ag-grid 行
- javascript - 将焦点大纲设置在复选框上包含标签上
- java - JavaFX 从 SQL 查询填充组合框
- django - 需要一个关于数据库查询优化的小建议
- php - 如何在搜索中显示日期之间的记录?