Временно удалить URL из строки - PullRequest
2 голосов
/ 13 апреля 2020

Я создал бота в Твиттере, который копирует твит определенного пользователя, а затем увлекает его, то есть он просто меняет некоторых персонажей, делая их забавными, например, Элон становится Эвон. Сейчас, конечно, это очень спорно, как смешно это на самом деле, но я думаю, что это, кроме точки на данный момент.

1002 * Если я получил твит с URL, конечно, URL не может быть СВП-Fied, так как это будет стать недействительным. То, как я продал это прямо сейчас, - поиск URL с помощью регулярного выражения, замена его на performance.now() (я использовал UUID v4, но он также содержит символы, которые могли бы появиться с помощью uwu-fied) и сохранил объект с использованным URL-адресом и performance.now().

Затем, когда завершена uwu-фикация, я могу восстановить, используя сохраненный объект, это работает, но это похоже на решение в виде тела. Единственное другое решение, о котором я могу подумать, - это генерирование UUID, который содержит только символы, которые не получат uwu-fied?

РЕДАКТИРОВАТЬ:

На основе текущего отмеченного ответ Я решил проблему, преобразовав свой код в это:

// Split the sentence into words
const words = sentence.split(` `);
const pattern = new RegExp(/(?:https?|ftp):\/\/[\n\S]+/g);

// If the word is a URL just attach it to the new string without uwufying
let uwufied = ``;
words.forEach(word => uwufied += ` ${pattern.test(word) ? word : uwufyWord(word)}`);

1 Ответ

1 голос
/ 13 апреля 2020

Вы можете разбить твит на массив .split(" "), а затем запустить этот массив с помощью foreach l oop. Вы можете обрабатывать твит слово за словом тогда. В начале вашего дескриптора вы должны проверить, что «слово» - это , а не URL. Затем обработайте ваши замены.

let tweet = "Hello World. What's up?"
let arr = tweet.split(" ")
let output = ""

for (word of arr) {
  // Check that it's not an URL here
  // Replace here
  output += word + " "
}

// Use output here
console.log(output)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...