【问题标题】:nodejs - how to remove part of a string after a delimiternodejs - 如何在分隔符后删除部分字符串
【发布时间】:2021-08-05 11:32:10
【问题描述】:

我在 nodejs 脚本中使用此代码将一些元素推送到 list 问题类型的inquirerjs 的数组中。

for (let [index, torrent] of results.entries()) {
    if (torrent.seeds > 0 && torrent.peers > 0) {
        filesList.push(`${torrent.title} s:${torrent.seeds} p:${torrent.peers}`);
        filesDetails.push(torrent);
    } else {
        results.splice(index, 1);
    }
}

如您所见,我在文件名后添加了s:valuep:value,以告知用户文件的种子和对等点。当用户从列表中选择一个文件时,我正在搜索对象数组以找到该文件并将其返回。如果我不将s:valuep:value 添加到文件名中,一切都按预期工作,但由于我需要提供这些信息,如何在循环数组之前从文件名中删除它们?

这是我目前用来在对象数组中找到正确文件的代码

const selectedTorrent = [];
for (let f of filesDetails) {
    if (f.title === availableTorrents.selected) {
        selectedTorrent.push(f);
    }
}

【问题讨论】:

  • 为什么不做filesList.push({title: torrent.title, s: torrent.seeds, p: torrent.peers}?如果您稍后在其他地方需要单独的值,使用字符串似乎是一种反模式
  • @LawrenceCherone 因为我使用fileList 来选择inquirerjs 的问题。不知道有没有可能

标签: javascript node.js webtorrent inquirerjs


【解决方案1】:

第二个sn-p中“filesList”是怎么用的不是很清楚,但是要回答标题中的问题,可以使用内置字符串的组合去掉“s:”开头的部分函数indexOfsubstring

let title = `Torrent title s:${torrent.seeds} p:${torrent.peers}`;

let strippedTitle = title.substring(0, title.indexOf(" s:")); // returns "Torrent title"

indexOf:MDN Docs

子字符串:MDN Docs

【讨论】:

  • filesList 提供给inquirerjs,为用户提供选择。当用户选择一个可能的选项时,它被添加到用于文件名比较的第二个 sn-p 中的availableTorrents.selected 中!您的解决方案还将删除 p: ?
  • 好吧,我就是这么想的。是的,此解决方案也将删除“p:”。它采用从索引 0(开头)处的字符到字符串“s:”的索引的子字符串。我会用一些关于方法的文档来更新答案
  • 很高兴您发现它有帮助! :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2016-03-13
  • 1970-01-01
  • 2017-07-02
相关资源
最近更新 更多