Динамически вырезать десятичные точки - PullRequest
0 голосов
/ 14 октября 2019

У меня есть несколько десятичных чисел.

Все они представляют собой десятизначные десятичные числа как String

Я бы хотел разделить их на 0 и non-zero.

"0.0000001234" => "0.000000", "1234" 
"0.0012345678" => "0.00", "12345678"
"0.0000123456" => "0.0000", "123456"

Я читал о slice() или split(), но моя проблема динамическая, поэтому я не могу ее решить.

Как мне достичь своей цели?

Ответы [ 2 ]

4 голосов
/ 14 октября 2019

Вы можете использовать split

 (^0+(?:\.0+)?)

enter image description here

let slicer = (str) =>{
  return str.split(/(^0+(?:\.0+)?)/).filter(Boolean)
}

console.log(slicer("0.0000001234"))
console.log(slicer("0.0012345678"))
console.log(slicer("0.0000123456"))
console.log(slicer("0.1000123456"))
console.log(slicer("1.1000123456"))
1 голос
/ 14 октября 2019

Я бы использовал регулярное выражение для разбиения при обнаружении [1-9] и захвата оставшейся части строки:

const parse = str => {
  const [zeros, digits] = str.split(/([1-9].*)/);
  console.log(zeros, digits);
};

parse("0.0000001234") // => "0.000000", "1234" 
parse("0.0012345678") // => "0.00", "12345678"
parse("0.0000123456") // => "0.0000", "123456"
...