我被困住了。这个很容易。但是,它已成为我的噩梦。
我无法解析此字符串并存储到名为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
。
答案 0 :(得分:9)
您可以使用regular expression:
var f = "5'9''";
var rex = /^(\d+)'(\d+)''$/;
var match = rex.exec(f);
var feet, inch;
if (match) {
feet = parseInt(match[1], 10);
inch = parseInt(match[2], 10);
}
如果将正则表达式更改为
var rex = /^(\d+)'(\d+)(?:''|")$/;
...然后它允许您在英寸值之后使用''
或更常见的"
。
答案 1 :(得分:2)
var f = "5'9''";
var a = f.split("'");
var feet = a[0];
var inch = a[1];
答案 2 :(得分:0)
正则表达式可以解决这个问题:
var f = "5'9''";
var match = f.match(/^(\d+)'(\d+)''$/);
var feet = +match[1],
inch = +match[2];
答案 3 :(得分:0)
只需从
中删除-1
即可
var inch = f.substring(nn + 1, f.lastIndexOf("\'\'")-1);
由于substring
方法采用起始索引和结束索引。它应该是:
var inch = f.substring(nn + 1, f.lastIndexOf("\'\'"));
答案 4 :(得分:0)
上面所选答案的问题是,如果没有提供英寸,它就不匹配。这是一个可以处理英尺/英寸或只是英尺的解决方案。
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);
}