如何从字符串值中设置整数?

时间:2016-08-18 19:35:38

标签: javascript angularjs

我有角度选项,我显示文件大小,但我使用变量值来计算一些字节,我只需要整数,如果用户选择“1MB”我想分配给变量maxMb 1.是否可以使用javascript?

ctrl.js

style = ele.currentStyle || window.getComputedStyle(ele, false);
bg = style.backgroundImage;     // get bg image URL
ele.style.backgroundImage=bg;  // reasign bg image URL

3 个答案:

答案 0 :(得分:3)

您可以(ab)使用parseInt以及它将字符串转换为整数并且一旦遇到非数字字符就会停止转换的事实。

console.log(parseInt('1MB', 10));  // 1
console.log(parseInt('2MB', 10));  // 2
console.log(parseInt('5MB', 10));  // 5
console.log(parseInt('10MB', 10)); // 10

答案 1 :(得分:1)

如果您可以控制数据集,我建议将fileSizeOption设置为具有显示值和大小值的对象数组。那样就没有hackity解析对象了。请参阅代码段和codePen

http://codepen.io/Lethargicgeek/pen/BzEjPX

angular.module("myApp", []);

angular.module("myApp").controller("myCtrl", ctrlFn);

function ctrlFn() {
  var $ctrl = this;
  $ctrl.fileSizeOptions = [{
    size: 1,
    value: "1MB"
  }, {
    size: 2,
    value: "2MB"
  }, {
    size: 3,
    value: "3MB"
  }, {
    size: 4,
    value: "4MB"
  }, {
    size: 5,
    value:"5MB"
  }];
  $ctrl.onChange = onChange;

  function onChange() {
    $ctrl.maxMb = $ctrl.selectedFileSize.size;
    $ctrl.maxBytes = 1000 * 1000 * $ctrl.maxMb;
  }
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.5/angular.min.js"></script>
<link href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet"/>
<div ng-app="myApp">
  <div ng-controller="myCtrl as $ctrl">
    <select ng-model="$ctrl.selectedFileSize"
            ng-options="opt as opt.value for opt in $ctrl.fileSizeOptions"
            ng-change="$ctrl.onChange()">
    </select>
    
    <dl>
      <dt>$ctrl.selectedFileSize</dt>
      <dd>{{$ctrl.selectedFileSize}}</dd>
      
      <dt>$ctrl.maxMb</dt>
      <dd>{{$ctrl.maxMb}}</dd>
      
      <dt>$ctrl.maxBytes</dt>
      <dd>{{$ctrl.maxBytes}}</dd>      
    </dl>
  </div>
</div>

答案 2 :(得分:0)

您可以切掉最后两个字符,然后使用一元+强制转换为int,或者替换所有非数字字符,然后强制该值。

console.log(+'1MB'.slice(0, -2));
console.log(+'1MB'.replace(/\D/g, ''));