javascript - 检测 txt 中的 URL
问题描述
我有带有 url 的 txt 文件。如何将此网址分开以在 js 代码中使用它们?我试图用 .split(/\n\t/g)
let sites = await readFile('./sites.txt');
sites = sites.split(/\n\t/g);
await context.overridePermissions(sites, ['notifications']);
try {
await context.overridePermissions(sites, ['push']);
} catch (e) {}
解决方案
有 3 件事你应该注意:
- NodeJS
fs.readFile
不适await
用于开箱即用的 / 承诺 fs.readFile
Buffer
除非指定了编码(例如'utf8'),否则给你一个,而不是一个字符串:
fs.readFile('./sites.txt', 'utf8', callback);
- 如果您的文件仅包含 URL(每行一个 url),您可以用换行符分隔(如
\n
),但您必须记住,不同的平台在文本文件中保存新行的方式不同 - 在 Unix 上它只是\n
,在 Windows 上:\r\n
.
所以你的代码可能看起来像:
const fs = require('fs');
fs.readFile('./sites.txt', 'utf8', (err, content) => {
if (err) {
console.error(err);
return;
}
const urls = content.split('\n');
// do sth with urls
});
如果你想使用 await 或 promise 模式,你可以例如 promisify fs.readFile
:
const util = require('util');
const readFile = util.promisify(fs.readFile);
然后在你的异步函数中:
async function getURLs() {
const content = await readFile('./sites.txt', 'utf8');
return content.split('\n');
}
推荐阅读
- c# - 可注入单例服务但不是 new()able .net 核心
- amazon-web-services - AWS ECS 容器随机重启
- c++ - 如何在 gcc 或 clang 中使用 c++20(启用模块)包含多个预编译头文件
- npm - 运行 vue dev server gitlab-ci 和微服务架构
- linux - 为什么 Qemu 运行与原生运行不同?
- java - 在 Android 应用中显示用户的 YouTube 数据,例如用户喜欢的视频和订阅
- css - 如何使网格列适合其余空间
- string - Chaiscript,如何将字符转换为字符串
- python - 找到给定编号的所有可能排列和组合。使用 Python 的列表中的元素
- security - 什么被认为是“填充”的 UDP 包 - 它什么时候实际上没有有效负载?