JavaScript 在结束行添加“·”字符

Posted

技术标签:

【中文标题】JavaScript 在结束行添加“·”字符【英文标题】:JavaScript adding "·" character to endline 【发布时间】:2022-01-20 02:55:39 【问题描述】:

所以我正在尝试为我编写的 python 代码运行 tests.js,一切似乎都很好,但是在每一行的末尾(“\n”字符),tests.js 文件附加了一个“ ·“ 特点。该文件在内部使用 toString() 方法将 python 输出转换为字符串,然后使用 toEqual() 将其与预期的字符串进行比较。

我的代码:

def print_help():
    print("""Usage :-
$ ./task add 2 hello world    # Add a new item with priority 2 and text "hello world" to the list
$ ./task ls                   # Show incomplete priority list items sorted by priority in ascending order
$ ./task del INDEX            # Delete the incomplete item with the given index
$ ./task done INDEX           # Mark the incomplete item with the given index as complete
$ ./task help                 # Show usage
$ ./task report               # Statistics""", end="")

输出:

tests.js 代码:

test("prints help", () => 
  let received = execSync(tasksTxtCli("help")).toString("utf8");

  expect(received).toEqual(expect.stringContaining(usage));
);

【问题讨论】:

【参考方案1】:

我不知道您在 Node.js 中使用什么输出,但很可能这实际上不是中间点字符,而是终端模拟器无法打印的字符。

换句话说,您所看到的并不是真的。只是有些东西在那里。

我希望这是\r\n\n 之间换行符的区别。您的比较字符串可能没有 \r\n,但 Python 输出可能有。

如果您想真正确定它是什么,请将您的 Python 输出通过管道传输到一个文件并使用十六进制编辑器打开它。甚至,只是不要转换为字符串并使用console.log()(或util.inspect())来查看二进制输出的十六进制表示。

【讨论】:

是的,你是对的。我使用十六进制编辑器检查了输出,它确实是一个回车。但现在的问题是:我该如何摆脱它?我不能编辑 test.js 文件,因为我应该只在 python 文件中进行编辑。 @AyamDobhal 我认为你的测试太严格了。但是,如果您坚持使用自动化测试检查此输出,我认为您的测试应该支持以 Python 应用程序结尾的任一行。在任何情况下,当您编辑此 Python 文件时,请使用允许您更改行尾的文本编辑器。例如,如果您使用的是 VSCode,则可以在 IDE 的右下角进行更改。【参考方案2】:

根据我的解决方案将您的代码修改为:

def print_help():
    help="""Usage :-
$ ./task add 2 hello world    # Add a new item with priority 2 and text "hello world" to the list
$ ./task ls                   # Show incomplete priority list items sorted by priority in ascending order
$ ./task del INDEX            # Delete the incomplete item with the given index
$ ./task done INDEX           # Mark the incomplete item with the given index as complete
$ ./task help                 # Show usage
$ ./task report               # Statistics"""
    sys.stdout.buffer.write(help.encode('utf8'))

这样,dot(.) 就不会出现在命令行上。 参考:https://github.com/nseadlc-2020/package-todo-cli-task/issues/12

【讨论】:

以上是关于JavaScript 在结束行添加“·”字符的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript

7.mongo命令行运行JavaScript脚本

将文本字段更新为 JSON 字符串 - Javascript/JQuery [重复]

如何在Javascript中检查字符串结束位置是不是存在值? [复制]

在 Notepad++ 的每一行末尾添加一个字符 )

在 nuxt 正文结束之前添加客户端 javascript 资产