How to split and modify a string in NodeJS?

后端 未结 3 1896
北恋
北恋 2020-12-23 17:41

I have a string :

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

I want to parse each item after split and increment 1. So I will have:

v         


        
相关标签:
3条回答
  • 2020-12-23 17:45
    var str = "123, 124, 234,252";
    var arr = str.split(",");
    for(var i=0;i<arr.length;i++) {
        arr[i] = ++arr[i];
    }
    
    0 讨论(0)
  • 2020-12-23 18:09

    Use split and map function:

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

    Notice +val - string is casted to a number.

    Or shorter:

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

    edit 2015.07.29

    Today I'd advise against using + operator to cast variable to a number. Instead I'd go with a more explicit but also more readable Number call:

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

    edit 2017.03.09

    ECMAScript 2015 introduced arrow function so it could be used instead to make the code more concise:

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

    0 讨论(0)
  • 2020-12-23 18:10

    If you're using lodash and in the mood for a too-cute-for-its-own-good one-liner:

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

    It's surprisingly robust thanks to lodash's powerful parsing capabilities.

    If you want one that will also clean non-digit characters out of the string (and is easier to follow...and not quite so cutesy):

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

    2017 edit:

    I no longer recommend my previous solution. Besides being overkill and already easy to do without a third-party library, it makes use of _.chain, which has a variety of issues. Here's the solution I would now recommend:

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

    My old answer is still correct, so I'll leave it for the record, but there's no need to use it nowadays.

    0 讨论(0)
提交回复
热议问题