2017-09-23 24 views
0

をやって、私は"(7 years 1 month)"のような物を持っていると私はをカウントし、それを解析します月合計Javascriptの正規表現は、私はいくつかのデータをこすると数字</p> <p>ですから、例えばにいくつかの文字列を解析しようとしています番号に文字列を解析し、いくつかのcalucations

このコードは機能しますが、少し面倒です。それを簡単にする簡単な方法はありますか?

var str = "(7 years 1 month)" 

function calculateMonths(str){ 
     var parseTime = /\d*/; 
     var findMonths = /\d*\s\month/; 
     var monthsTime = str.match(findMonths) 
     if (monthsTime == null) { 
      var months = 0 
     } else { 
      r = monthsTime[0]; 
      var y = r.match(parseTime) 
      var months = y[0] 
      return months 
     } 
    } 

    function calculateYears(str){ 
     var parseTime = /\d*/; 
     var findYears = /\d*\s\year/; 
     var yearsTime = str.match(findYears); 
     if (yearsTime == null) { 
      var years = 0 
     } else { 
      r = yearsTime[0]; 
      var x = r.match(parseTime); 
      var years = x[0]; 
     } 
     return years 
    } 

答えて

1

あなただけの配列をループ、その後、あなたの配列を返し、年と月に基づいヶ月を追加するスプリットを使用して文字列(」「)を分割することができます。このような何か:

var str = "(7 years 1 month)"; 
 
var arr = str.replace(/[()]/g, "").split(/\s/), totalMonths = 0; 
 
arr.forEach((x,index) => { 
 
    switch(x){ 
 
    case 'years': 
 
     totalMonths += +arr[index-1]*12; 
 
     break; 
 
    case 'month': 
 
     totalMonths += +arr[index-1]; 
 
     break; 
 
    } 
 

 
}) 
 
console.log(totalMonths);

関連する問題