Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/380.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在javascript中解析英尺英寸字符串?_Javascript - Fatal编程技术网

如何在javascript中解析英尺英寸字符串?

如何在javascript中解析英尺英寸字符串?,javascript,Javascript,我被卡住了。这个很简单。但是,这已经成为我的噩梦 我无法解析此字符串并将其存储到名为feet和inch的两个变量中 var f = "5'9''"; // 5 feet 9 inch var nn = f.indexOf("\'"); var feet = f.substring(0, nn); var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")-1); inch的输出应为9,但为nil您可以使用: | 如果将正则表

我被卡住了。这个很简单。但是,这已经成为我的噩梦

我无法解析此字符串并将其存储到名为
feet
inch
的两个变量中

  var f = "5'9''"; // 5 feet 9 inch 

  var nn = f.indexOf("\'");
  var feet = f.substring(0, nn);

  var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")-1); 
inch
输出应为
9
,但为
nil
您可以使用:

|

如果将正则表达式更改为

var rex = /^(\d+)'(\d+)(?:''|")$/;
…然后它将允许您在英寸值之后使用
'
或更常见的


|

正则表达式将实现以下功能:

var f = "5'9''";
var match = f.match(/^(\d+)'(\d+)''$/);
var feet = +match[1],
    inch = +match[2];

只需从中删除
-1

  var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")-1); 
As
substring
方法采用开始索引和结束索引。它应该是:

 var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")); 

以上所选答案的问题是,如果没有提供英寸,则答案不匹配。这里有一个解决方案,可同时处理英尺/英寸或仅处理英尺

  display( parse("5'9\"") );  
  display( parse("6'") );

  function parse(feetAndInches){
    var fAndI = feetAndInches.split("'");
    var feet = fAndI[0];
    var inches = fAndI[1] || "0";
    inches = inches.replace('"', '');
    var msg = feet+" feet, " + inches+ " inches";
    return msg;
  }

  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = String(msg);
    document.body.appendChild(p);
  }

在这里试试看:

@Regexident最后一行是9而不是5。@Adeel:嗯,正确。打字错误。修复了,我的错。
 var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")); 
  display( parse("5'9\"") );  
  display( parse("6'") );

  function parse(feetAndInches){
    var fAndI = feetAndInches.split("'");
    var feet = fAndI[0];
    var inches = fAndI[1] || "0";
    inches = inches.replace('"', '');
    var msg = feet+" feet, " + inches+ " inches";
    return msg;
  }

  function display(msg) {
    var p = document.createElement('p');
    p.innerHTML = String(msg);
    document.body.appendChild(p);
  }