javascript - 将新行字符替换为\r

标签 javascript node.js

我正在使用 hl7parser 来解析 ADM 文件。

文档指出,要创建新的 Message 对象,应传递一个字符串:

var message = hl7parser.create("MSH|^~\&|||||20121031232617||ADT^A04|20381|P|2.3||||NE\rEVN|A04|20121031162617||01\rPID|1|16194|16194||Jones^Bob");

请注意,该字符串使用 '\r' 来分隔段(MSH、EVN、PID)。

我正在从服务器获取数据,该服务器返回以下数据。

MSH|^~\&|EPICADT|DH|LABADT|DH|201301011226||ADT^A01|HL7MSG00001|P|2.3.1|
EVN|A01|201301011223||
PID|||MRN12345^5^M11||APPLESEED^JOHN^A^III||19710101|M||C|1 CATALYZE STREET^^MADISON^WI^53005-1020|GL|(414)379-1212|(414)271-3434||S||MRN12345001^2^M10|123456789|987654^NC|
NK1|1|APPLESEED^BARBARA^J|WIFE||||||NK^NEXT OF KIN
PV1|1|I|2000^2012^01||||004777^GOOD^SIDNEY^J.|||SUR||||ADM|A0|

\n 替换为 \rreplace() 不会使解析工作,split('\n')join('\r') 也不会。

我注意到在记录示例中传递的字符串和替换为 \r 后的字符串时存在差异

示例中包含字符串:

PID|1|16194|16194||Jones^BobADT^A04|20381|P|2.3||||NE

由于 \r 字符,它仅打印最后一段

用我的替换方法:

PID|||MRN12345^5^M11||APPLESEED^JOHN^A^III||19710101|M||C|1 CATALYZE STREET^^MADISON^WI^53005-1020|GL|(414)379-1PV1|1|I|2000^2012^01||||004777^GOOD^SIDNEY^J.|||SUR||||ADM|A0|

打印整个字符串,而不仅仅是最后一段。

我不确定为什么打印它们时会有差异。传递带有 \r 字符的文字字符串和“添加” \r 到字符串之间有区别吗?

最佳答案

这样做应该有效:

const lines = "A\nB\nC";
const result = lines.split("\n").join("\r");
console.log(result);

令人困惑的可能是因为它看起来好像没有,因为它看起来只是输出 ABC

但是,如果我们检查生成的字符串的长度:

const lines = "A\nB\nC";
const result = lines.split("\n").join("\r");
console.log(result);
console.log(result.length);

请注意,它的长度是 5 个字符,而不是 3 个。\r 就在那里。只是当它输出到大多数东西时,它基本上会被隐藏,因为 \r 本身并没有真正渲染到任何东西。

它是一个“回车符”,只有 MacOS(X 之前)使用它作为换行符。 Windows 使用 \r\n 的组合来呈现换行符,Linux(和 MacOSX)使用 \n

如果它想要在字符串 \r 中显式显示,那么您需要使用转义的字符串(尽管这几乎肯定不是它所期望的):

const lines = "A\nB\nC";
const result = lines.split("\n").join("\\r");
console.log(result);
console.log(result.length);

关于javascript - 将新行字符替换为\r,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50845446/

相关文章:

javascript - Typescript export const foo 与 export default { foo }

javascript - 如何修复错误 TypeError : Cannot read property 'map' of undefined

Javascript 原型(prototype)返回值未定义,即使它在原型(prototype)方法中是正确的

node.js - 蒙戈 : query on subdocs

javascript - 如何解释并运行以下 ant 命令?

javascript - 我不明白 javascript 对象创建语法中的哪些差异? IE8 与 Chrome

javascript - 我可以创建一个由 CSS 引擎监听的抽象文档吗?

php - 如何在MySql循环中使用zclip

deployment - 如何自动化 Node.js 部署?

node.js - 无法在 Ubuntu 19.04 中安装 Node.js