如何在NodeJS中拆分和修改字符串?

wbgh16ku  于 11个月前  发布在  Node.js
关注(0)|答案(4)|浏览(101)

我有一个字符串:

var str = "123, 124, 234,252";

字符串
我想解析拆分后的每一项,并递增1。所以我将有:

var arr = [124, 125, 235, 253 ];


如何在NodeJS中做到这一点?

aor9mmx1

aor9mmx11#

使用splitmap函数:

var str = "123, 124, 234,252";
var arr = str.split(",");
arr = arr.map(function (val) { return +val + 1; });

字符串
注意+val- string被转换为一个数字。
或更短:

var str = "123, 124, 234,252";
var arr = str.split(",").map(function (val) { return +val + 1; });

编辑2015.07.29

今天,我建议反对使用+运算符将变量转换为数字。相反,我会使用一个更显式但也更可读的Number调用:

var str = "123, 124, 234,252";
var arr = str.split(",").map(function (val) {
  return Number(val) + 1;
});
console.log(arr);

编辑2017.03.09

ECMAScript 2015引入了 arrow function,因此可以使用它来使代码更加简洁:

var str = "123, 124, 234,252";
var arr = str.split(",").map(val => Number(val) + 1);
console.log(arr);

siv3szwd

siv3szwd2#

var str = "123, 124, 234,252";
var arr = str.split(",");
for(var i=0;i<arr.length;i++) {
    arr[i] = ++arr[i];
}

字符串

s8vozzvw

s8vozzvw3#

如果你正在使用lodash,并且有心情写一个太可爱了的俏皮话:

_.map(_.words('123, 124, 234,252'), _.add.bind(1, 1));

字符串
由于lodash强大的解析能力,它的健壮性令人惊讶。
如果你想要一个也能从字符串中清除非数字字符的字符串(并且更容易理解......而且不那么可爱):

_.chain('123, 124, 234,252, n301')
   .replace(/[^\d,]/g, '')
   .words()
   .map(_.partial(_.add, 1))
   .value();

  • 2017年编辑 *:

我不再推荐我以前的解决方案。除了矫枉过正,已经很容易做没有第三方库,它利用_.chain,其中has a variety of issues。这是我现在推荐的解决方案:

const str = '123, 124, 234,252';
const arr = str.split(',').map(n => parseInt(n, 10) + 1);


我以前的答案仍然是正确的,所以我将把它留作记录,但现在没有必要使用它。

uelo1irk

uelo1irk4#

你可以使用正则表达式来筛选字符串

var str = "123, 124, 234,252";
var regex = /\,\s*/
var arr = str.split(regex).map(d => (+d) + 1)

console.log(arr) // Output [124, 125, 235, 253]

字符串
你可能想要matches数字,所以:

var str = "123, 124, 234,252";
var regex = /\d+/gm
var arr = str.match(regex).map(d => (+d) + 1)

console.log(arr) // Output: [124, 125, 235, 253]

相关问题