nodejs express не работает с заменой строки или манипулированием строкой? - PullRequest
0 голосов
/ 09 июля 2020
  console.log(`Tweet is ${post}`);
  let splitted = post.text.split("$");
  console.log(splitted);
  let res = splitted[1].substr(0, splitted[1].indexOf(" "));
  console.log(res);
  let final = res.replace(/[^a-zA-Z]+/g, " ");
  console.log(final);

Я получаю твит и вижу, что это за твит, тогда терминал не показывает никакого измененного текста.

Но я получаю

    Tweet is {
  _id: 5f07027a7ec93029ccaa7a8b,
  text: '$pkpkpk',
  created_at: 2020-07-09T11:41:46.312Z,
  __v: 0
}
[ '', 'pkpkpk' ]
//Nothing here // Empty

Он дает мне вывод для твита, но не для переменных res и final . Я использую Twitter Lite

Twitter.stream("statuses/filter", parameters)
.on("start", (response) => console.log("start"))
.on("data", (tweet) => {
  //passing Tweet to replace function's etc
})
.on("ping", () => console.log("ping"))
.on("error", (error) => console.log("error", error))
.on("end", (response) => console.log("end"));
};

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 09 июля 2020

Проблема в следующем:

let res = splitted[1].substr(0, splitted[1].indexOf(" "));

вы должны правильно определить верхнюю границу substr

Я думаю, это то, что вы хотите сделать:

console.log(`Tweet is ${post}`);
let splitted = post.text.split("$");
console.log(splitted);
let res = splitted[1].substr(0, splitted[1].length);
console.log(res);
let final = res.replace(/[^a-zA-Z]+/g, " ");
console.log(final);
0 голосов
/ 09 июля 2020

Это потому, что у вас нет пробела в текстовом атрибуте.

let res = splitted[1].substr(0, splitted[1].indexOf(" ")); 

будет преобразовано в:

let res = splitted[1].substr(0, -1); // because indexOf returns -1.

Следовательно, вы ничего не получите.

вы можете

console.log(splitted[1].indexOf(" "));

, если хотите быть уверены в своем индексе

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...