在node.js中从字符串中拆分或删除最后一个字符或数字?

时间:2018-12-19 12:04:12

标签: javascript node.js

在下面的代码req.body.urlOfFolder中,最大的字符串为/,这个字符串是我要分割或删除的最后一个段,我尝试了分割(请参见下面的代码),那么如何删除最后一个段?

 console.log(req.body.urlOfFolder); //  131/131/980/981/982/983/984/985/986/987/988

 var urloffolder =  req.body.urlOfFolder.split('/')[0];
 console.log(urloffolder); // 131 (this output i get)

 console.log(urloffolder); // 131/131/980/981/982/983/984/985/986/987 (this output i want)

4 个答案:

答案 0 :(得分:3)

您可以按斜杠分开,弹出最后一个不需要的988,然后再次加入:

const url = '131/131/980/981/982/983/984/985/986/987/988';
const splits = url.split('/');
splits.pop();
const fixedUrl = splits.join('/');
console.log(fixedUrl);

另一种选择是使用正则表达式:

const url = '131/131/980/981/982/983/984/985/986/987/988';
const fixedUrl = url.match(/\d+(?:\/\d+)+(?=\/\d+$)/)[0];
console.log(fixedUrl);

答案 1 :(得分:1)

请尝试使用Array.pop

let str = "131/131/980/981/982/983/984/985/986/987/988";
let temp = str.split("/"); // create array split by slashes
temp.pop(); // remove the last value 988 in our case
console.log(temp.join("/")); // join the values 

答案 2 :(得分:1)

您可以使用.splice(-1).pop()从拆分数组中删除最后一个元素,然后使用.join('/')/重新加入拆分字符串:

.split('/')给出:

['131', '131', '980', '981', '982', '983', '984', '985', '986', '987', '988']

.splice(-1).pop()将上面的数组变成(删除最后一个元素):

['131', '131', '980', '981', '982', '983', '984', '985', '986', '987'] 

.join('/')将上面的数组转换为字符串:

"131/131/980/981/982/983/984/985/986/987"

const numbers = "131/131/980/981/982/983/984/985/986/987/988"
const numbersArray = numbers.split('/');
numbersArray.splice(-1);

const newNumbers = numbersArray.join('/');
console.log(newNumbers);

上述序列也可以使用.reduce来实现:

const numbers = "131/131/980/981/982/983/984/985/986/987/988"
const newNumbers = numbers.split('/').reduce((acc, elem, i, arr) => i == arr.length-1 ? acc : acc+'/'+elem);

console.log(newNumbers);

答案 3 :(得分:1)

另一种方法是使用substrlastIndexOf

let str = "131/131/980/981/982/983/984/985/986/987/988";

let op = str.substr(0,str.lastIndexOf('/'));

console.log(op);

正则表达式方法

let str = "131/131/980/981/982/983/984/985/986/987/988";

let op = str.match(/.*(?=\/)/g)[0];

console.log(op);