2013-03-08 2 views
0

Я застрял. Это легко. Но для меня это стало кошмаром.Как разбить ногу-дюйм строку в 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.

+0

@Regexident будет 9 вместо 5 в последней строке. – Adeel

+0

@ Adeel: Верно. Опечатка. Исправлено, плохо. – Regexident

ответ

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); 
} 

Live Example | Source

Если изменить регулярное выражение для

var rex = /^(\d+)'(\d+)(?:''|")$/; 

... то это позволит вам использовать либо '' или более общих " после значения дюймов.

Live Example | Source

2
var f = "5'9''"; 
var a = f.split("'"); 
var feet = a[0]; 
var inch = a[1]; 
+0

дюйм возвращается как 9, [скрипка] (http://jsfiddle.net/tn98m/21/) –

0

Регулярные выражения будут делать трюк:

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

Просто удалить -1 из

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

Как substringметод принимает начальный индекс и конечный индекс. Это должно быть:

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

Спасибо @Adeel ... Он работает ... http://jsfiddle.net/shbh/a5sKh/ – Shashi

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); 
    } 

Попробуйте здесь: https://jsfiddle.net/dqeeysf6/3/

Смежные вопросы