Очистить текст от символов для терминала
Я использую такой код:
const { spawn } = require("node-pty")
aiProcess = spawn("ollama", [
"run",
process.env.AI_NAME,
message.content,
"--nowordwrap",
])
let reply = ""
aiProcess.onData(async (text) => {
console.log(text)
reply += text.trim()
})
aiProcess.onExit(async () => {
console.log(reply)
await message.reply(reply)
})
qwen2.5 генерирует ответ, он выводится в консоль. Но при отправке (в данном случае в дискорд) в тексте оказывается много символов, которые скорее всего предназначены для терминала и не должны быть видны.
То есть:
Нормально, а у тебя как :cool:?
Превращается в
[?2026h[?25l[1G⠙ [K[?25h[?2026l[?2026h[?25l[1G⠹ [K[?25h[?2026l[?25l[?2026h[?25l[1G[K[?25h[?2026l[2K[1G[?25hН[?25l[?25hорм[?25l[?25hально[?25l[?25h,[?25l[?25h а[?25l[?25h у[?25l[?25h тебя[?25l[?25h как[?25l[?25h :[?25l[?25hcool[?25l[?25h:?[?25l[?25h[?25l[?25h
Я пробовал:
- reply.replace(/[^A-Za-zА-Яа-яЁё\s\p{P}\d=+|^]/, "")
- reply.normalize()
Оба способа не дали заметного результата
Источник: Stack Overflow на русском