Есть ли функция для извлечения чисел из строки - PullRequest
1 голос
/ 20 сентября 2019

Я пытаюсь выяснить, как получить числа в строке.

Я попробовал функцию Number (string), но она возвращает мне "NaN" ...

Например:

let str = "MyString(50)";

/*Function that return "NaN"*/
let numbers = Number(str);

console.log(numbers);


//Output expected : 50
//Output if get : 50

У кого-нибудь есть идея, почему «Число» не возвращает мне правильное значение или другой способ сделать это?

Спасибо за ответы.

Ответы [ 3 ]

1 голос
/ 20 сентября 2019

Операция регулярного выражения match используется для получения числа.

 var str = "MyString(50)"; 
 var matches = str.match(/(\d+)/);
 
 console.log(matches[0]);

Перейдите по этой ссылке, чтобы узнать о ссылке на регулярное выражение [https://developer.mozilla.org/en/docs/Web/JavaScript/Guide/Regular_Expressions].

1 голос
/ 20 сентября 2019

Здесь более полное регулярное выражение для обнаружения всех видов чисел в строке:

/ 0[bB][01]+ |0[xX][0-9a-fA-F]+ |[+-]? (?:\d*\.\d+|\d+\.?) (?:[eE][+-]?\d+)? / г;

   binary   |       hex         | sign?      int/float       exponential part?

const matchNumbers = /0[bB][01]+|0[xX][0-9a-fA-F]+|[+-]?(?:\d*\.\d+|\d+\.?)(?:[eE][+-]?\d+)?/g;

let str = `
Let      -1
us       +2.
start    -3.3
and      +.4
list     -5e-5
some     +6e6
number   0x12345
formats  0b10101  
`;

console.log("the string", str);

const matches = str.match(matchNumbers);

console.log("the matches", matches);

const numbers = matches.map(Number);

console.log("the numbers", numbers);
.as-console-wrapper{top:0;max-height:100%!important}
1 голос
/ 20 сентября 2019

Вы можете использовать String.match с регулярным выражением, чтобы отфильтровать числа, и использовать unary + или Number(str) или parseInt, чтобы получить число

let str = "MyString(50)";

let numbers = +str.match(/\d+/);

console.log(numbers);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...