Home > Net >  Javascript get number from string
Javascript get number from string

Time:07-29

I have this an example:

const str = "Icecream, Milk, vanilla syrup, ice cubes20.0 SR180 calories"

I need a way to get the 20.0 from the string, it is always positioned before SR

I tried to convert the string to array like so:

const strArr = str.split(' ');

and try to get the index of the object contain SR

const index = strArr.map((object) => object).indexOf('SR');

But it showed me a result of -1

I was thinking to get the element by index - 1 to have the result of 20.0

Any other ideas, how to make it properly?

Thanks

CodePudding user response:

If you're gonna split do it on SR. Then extract the digits from the end of the first string.

const str = "Icecream, Milk, vanilla syrup, ice cubes20.0 SR180 calories"
var arr = str.split("SR");
var rev = arr[0].trim().split("");
var num = []
while (rev.length) {
  var char = rev.pop();
  if (!(char >= '0' && char <= '9' || char == ".")) {
    break;
  }
  num.push(char);
}
var result = num.reverse().join("");
console.log(result)

CodePudding user response:

I think this might help:

const finalNumber = str.split(' SR')[0].trim().split(' ').pop().replace(/[^\d.]/g, '');
console.log(finalNumber);

EDITED:

console.log("final", str.split('SR')[0].replace(/[^\d.]/g, '').split('.').slice(-2).join('.'))

CodePudding user response:

We can use match with following regexp:

const str = "Black coffee preparing with v60 filter18.00 SR38 Calories"
const res = str.match(/\d (.\d )?(?= SR)/g)
console.log(res[0])

Regexp explain:

  • \d - will match any string of digits,
  • (.\d )? - will match floating point (optionally thanks to ?),
  • (?= SR) - will match a group after main expression without including it in results.
  • Related