转换为5' 5"用JavaScript表示cm

时间:2018-04-27 01:09:23

标签: javascript function range

我有很多高度,以英寸为单位,如果它们处于其他高度之间,则需要进行检查。但是,数据并非100%完美;有时,该数字显示为5'5",有时显示为5' 5"(带空格)。它之间出现的高度也会有所不同,有时候看起来像5'5" - 5'10",有时像5' 5"-5' 10",有时像5'5"-5' 10" Height ......你明白了。

因此,我正在尝试构建一个函数,该函数将采用5'5"之类的数字,并确认truefalse该数字介于格式{{之间的高度范围之间1}}。

5' 5"-5' 10"

2 个答案:

答案 0 :(得分:2)

这使用了类似的正则表达式,但删除了^$,因此匹配可以在任何地方发生,并添加\s*,以便脚之间可以有任意数量的空白英寸。它还以更简单的方式进行测试,并避免完全转换为cm



function checkHeight( userHeightStr, heightRangeStr ) {
    const [ userHeight, minHeight, maxHeight ] =
      [ userHeightStr, ...heightRangeStr.split('-') ].map( heightStr => { 
        const [ , feet, inches ] = heightStr.match( /(\d+)'\s*(\d+)(?:''|")/ );
        return feet*12 + +inches;
      } )
    ;
    console.log( 'Heights in inches: ', { userHeight, minHeight, maxHeight } );
    return minHeight <= userHeight && userHeight <= maxHeight;
}

console.log( checkHeight("5' 4\"","5'  5\" - 6' 1\" Height") ); // false
console.log( checkHeight("5' 5\"","5'5\" - 6' 1\" Height") ); // true
console.log( checkHeight("5'10\"","5'5\"-5' 10\"") ); // true
console.log( checkHeight("5'11\"","5'5\"   -5' 10''") ); // false
&#13;
&#13;
&#13;

答案 1 :(得分:0)

我在this link使用建议的正则表达式找到了这个。

    function checkHeight(userHeight,heightRange) {
      var heightRangeArr = heightRange.replace(/\s/g,'').toLowerCase().replace('height','').split('-');
      var heightRangeStart = heightRangeArr[0];
      var heightRangeFinish = heightRangeArr[1];
      var userHeight = userHeight.replace(/\s/g,'');
      if (convertToCm(userHeight) >= convertToCm(heightRangeStart) && convertToCm(userHeight) <= convertToCm(heightRangeFinish) ) {
        console.log(true);
      } else {
        console.log(false);
      }
    };
    
    function convertToCm(inchInput) {
      var rex = /^(\d+)'(\d+)(?:''|")$/;
      var match = rex.exec(inchInput);
      var feet, inch;
    
      if (match) {
        feet = parseInt(match[1], 10);
        inch = parseInt(match[2], 10);
      } else {
        console.log("Didn't match");
      }
      cmConvert = ((feet * 12) + inch)*2.54;
      console.log('*** *** ***');
      console.log(cmConvert);
      return cmConvert;
    }
    
    checkHeight("5' 5\"","5'5\"-5' 10\" Height");