Извлечение целого числа из строки? - PullRequest
1 голос
/ 05 марта 2011

Как мне извлечь числа из строки следующим образом:

$1.50

Все, кроме символа валюты.Или как-то так:

rofl1.50lmao

Просто спрашиваю, существует ли существующая функция, о которой я не знаю.

Ответы [ 3 ]

4 голосов
/ 05 марта 2011

Для этого в AS3 нет встроенной функции. Простой RegExp, как этот, должен вам помочь:

/[0-9]+.?[0-9]*/

Это пример, и его следует изменить в зависимости от контекста.

Вот более точный RegEx от Gunslinger47 :

/-?\d*\.?\d+([eE]\d+)?/
1 голос
/ 05 марта 2011

Насколько я знаю, нет.Вы можете анализировать каждый символ по массиву допустимых символов или использовать регулярное выражение.

1 голос
/ 05 марта 2011

Это "простой" JavaScript, но FWIW:

justNumsAndDots = "rofl1.50lmao".replace(/[^\d.]/g,"") // -> "1.50" (string)
asIntegral = parseInt("0" + justNumsAndDots, 10)       // -> 1 (number)
asNumber = parseFloat("0" + justNumsAndDots)           // -> 1.5 (number)
asTwoDecimalPlaces = (2 + asNumber).toFixed(2)         // -> "3.50" (string)

Примечания:

  1. Не учитывает локализацию.
  2. Корень (базовый-10) передается в parseInt, чтобы избежать возможного восьмеричного преобразования (не уверен, если эта «проблема» изводит AS).
  3. «0» добавляется в начало justNumsAndDots, поэтому parseInt / parseFloat никогда не вернет NaN,(например, parseFloat(".") -> NaN, parseFloat("0.") -> 0).Если нужны значения NaN, измените на suite.
  4. Ввод, такой как "rofl1.chopter50lolz", будет обрезан до "1.50", в зависимости от необходимости он может быть слишком жадным.
  5. При необходимости адаптироваться к AS.

Удачного кодирования.

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