提问人:goatstash 提问时间:3/27/2022 更新时间:3/27/2022 访问量:56
从字符串数组中剪切第一个单词并存储在新变量中
Cut the first word out of an array of strings and store in a new variable
问:
我目前正在取回一个这样的数组:
['Alica Brereton,Marijuana,9.18,50',
'William Kotai,ecstasy,19.12,20',
'Joel Forro,heroin,91.16,5',
'David Ernest,Methamphetamine,108.78,5',
'David Ernest,cocaine,80,2',
'Joel Forro,ecstasy,19.12,10',
'Gabriella Hyde,Marijuana,9.18,10',
'Gabriella Hyde,Methamphetamine,108.78,8',
'Marijuana,9.18,10'
]
我想剪切每个字符串开头的名称并存储在一个新变量中,所以我会有这样的东西:
['Alica Brereton',
'William Kotai',
'Joel Forro',
'David Ernest',
'Joel Forro',
'Gabriella Hyde'
]
我正在处理一个文本文件,这是我当前的
code:
const fs = require("fs");
const data = fs.readFileSync("data.txt").toString();
const lines = data.split("\n");
let customerKeys = lines[0].replace("customer", "Total Price");
lines.shift();
console.log(customerKeys);
console.log(lines);
let array = lines.filter((str) => {
return str !== "";
});
let arrNoSpaces = array;
console.log(arrNoSpaces);
arrNoSpaces[6].replace("Gabriella Hyde,", "");
var GabriellaExtra = arrNoSpaces[6].replace("Gabriella Hyde,", "");
console.log(GabriellaExtra);
arrNoSpaces.push(GabriellaExtra);
console.log(arrNoSpaces);
arrNoSpaces.splice(-3, 1);
console.log(arrNoSpaces);
答:
1赞
CertainPerformance
3/27/2022
#1
正则表达式可以匹配每个字符串中的字母和空格(而不是逗号),映射到新数组。
const arr = ['Alica Brereton,Marijuana,9.18,50',
'William Kotai,ecstasy,19.12,20',
'Joel Forro,heroin,91.16,5',
'David Ernest,Methamphetamine,108.78,5',
'David Ernest,cocaine,80,2',
'Joel Forro,ecstasy,19.12,10',
'Gabriella Hyde,Marijuana,9.18,10',
'Gabriella Hyde,Methamphetamine,108.78,8',
'Marijuana,9.18,10'
];
const result = arr
.map(line => line.match(/\w+ \w+/)?.[0]) // extract matches
.filter((item, i, arr) => item && arr[i - 1] !== item) // filter out failed matches and dupes
console.log(result);
评论
0赞
goatstash
3/27/2022
这非常有效。我想知道您是否可以解释 .filter 行?
0赞
CertainPerformance
3/27/2022
\w+ \w+
将字符串与单词匹配,后跟一个空格,后跟更多单词。 提取匹配项(如果存在),否则计算结果为 。未定义的元素需要被过滤掉,因此 ,您还需要检查前一个元素是否等于当前元素以过滤掉重复项,这是可以做到的。?.[0]
undefined
item &&
arr[i - 1] !== item
0赞
goatstash
3/27/2022
我可以使用类似的方法来做相反的事情并获取所有不是名称的信息吗?
0赞
CertainPerformance
3/27/2022
之后,您可以在另一个捕获组中匹配所有内容并提取该匹配项,和/或将整个匹配项与另一个捕获组交替进行匹配(以选择甚至不以名称开头的行,例如Marijuana,9.18,10
)
评论
.map(str => str.split(',')[0])
'Joel Forro'
'David Ernest'