如何正确处理换行符及其转义?

问题描述 投票:0回答:1

我正在将 OpenAI 的 ChatGPT 流 API 的输出集成到 Web 应用程序中,并面临渲染换行符

\n
以及处理
\\n
(代表转义换行符)的挑战。输出可能包含需要在大多数文本中显示为 HTML 换行符 (
<br />
) 的换行符。但是,存在特定场景,例如在代码块内或当 或者 是教学内容的一部分,这些换行符应按原样保留。

\n
全局替换为
<br />
的简单天真的方法是不够的,因为它无法区分换行符用于格式化的上下文和换行符是实际内容的一部分的上下文(例如,
\n
出现在编程教程中的字符串或用于演示文本中的转义序列的
\\n
)。

我觉得有点有趣,我已经编程了这么多年,我可能以各种形式遇到过这个问题,而且它似乎总是通过任何转义机制自动处理,但是当我想到这个问题时看起来比较复杂。

是否有某种文本格式标准或约定来说明如何处理此问题?或者也许像这个小搜索替换这样的东西就是我真正需要的并且它能够处理所有情况?

var myEscapedJSONString = myJSONString.replace(/\\n/g, "\\n")
                                      .replace(/\\'/g, "\\'")
                                      .replace(/\\"/g, '\\"')
                                      .replace(/\\&/g, "\\&")
                                      .replace(/\\r/g, "\\r")
                                      .replace(/\\t/g, "\\t")
                                      .replace(/\\b/g, "\\b")
                                      .replace(/\\f/g, "\\f");

来自:https://stackoverflow.com/a/4253415/1663462

text escaping newline
1个回答
-1
投票

处理 Web 应用程序文本中的换行符和转义序列就像管理一袋好东西。您已经获得了常规文本、代码位和说明,每个都需要不同的处理。可以将其想象为对衣物进行分类 - 普通衣服放入洗衣机中,精致的衣服需要手洗,时髦的面料需要特别护理。因此,对于文本,将那些
标签放在换行符上,但保留 代码块中完好无损。并且不要忘记通过 HTML 编码特殊字符来提防 XSS 小妖怪!

© www.soinside.com 2019 - 2024. All rights reserved.