我是Node的新手,我试图在Node中编写一个命令行工具,允许你将一个字符串作为参数传递。
我看到Node在使用process.argv
时似乎打破了作为数组传入的每个单词。我想知道获取字符串的最佳方法是循环遍历数组以构造字符串还是有不同的选项?
所以,让我们说我有一个简单的程序,它接受一个字符串,只需控制台。记录它。它看起来像这样。
> node index.js This is a sentence.
> This is a sentence.
答案 0 :(得分:7)
您可以用引号括起句子,即
> node index.js "This is a sentence."
另一种选择是加入程序中的文本:
process.argv.shift() // skip node.exe
process.argv.shift() // skip name of js file
console.log(process.argv.join(" "))
答案 1 :(得分:0)
以上答案使用了过多的代码!
不用两次使用Array.prototype.splice
。
// Removes elements from offset of 0
process.argv.splice(0, 2);
// Print the text as usually!
console.log(process.argv.join(' '));
代码摘要
[Backspace]
分隔符加入他们。答案 2 :(得分:0)
如果您打算使用npm软件包。然后使用极简主义。变得易于处理命令行参数。例如,查看他们的npmjs网页。希望对您有帮助。
var args=require('minimist')(process.argv.slice(2),{string:"name"});
console.log('Hello ' +args.name);
输出是。
node app.js --name=test
Hello test
答案 3 :(得分:0)
另一种不需要引号或修改 process.argv
的解决方案:
const [ node, file, ...args ] = process.argv;
const string = args.join(' ');
console.log(string);
输出:
> node index.js This is a sentence
> This is a sentence
如果您想详细了解我在此处使用展开运算符 (...
) 的方式,请阅读:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment#Rest_in_Object_Destructuring