2015-11-11 3 views
0

У меня есть специальный формат времени JSON, напр: 07_23 означает 7:00 - 23:00, и когда он показывает , пример: 07_24 его следует изменить на 07:00 - 23:59.JQuery использовать вместо() функцию, чтобы добавить слова для строки

Мой код здесь:

$(document).ready(function() { 
 
    var json = [{"name":"Meee","time":"07_24"}]; 
 
    
 
    for (var i = 0; i < json.length; i++) { 
 
    tr = $('<tr/>'); 
 
    tr.append("<td>" + json[i].name + "</td>"); 
 
    tr.append("<td>" + json[i].time + ":00" + "</td>"); 
 
    $('table').append(tr); 
 
    
 
    $("td:contains('_')").text($("td:contains('_')").text().replace('_', ':00-')); 
 
    $("td:contains('24')").text($("td:contains('24')").text().replace('24:00', '23:59')); 
 
    
 
    } 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<table> 
 
    <tr> 
 
     <th>Name</th> 
 
     <th>Time</th> 
 
    </tr> 
 
</table>

JSFiddle

Я думаю, что мой код немного глупо, есть ли лучший способ избавиться от 07_24 подчеркивание, добавьте : 00 для каждого номера, и изменить до 23:59? Или я могу использовать регулярное выражение для достижения этой цели?

+0

Для того чтобы быть ясным, нет ничего плохого в вашем правильном коде выше? –

+0

Да, в моем коде нет ничего плохого, но я думаю, что это не лучший способ достичь моей цели. –

+0

Лично я думаю, что ваш метод в порядке. Я не думаю, что это «глупый» способ сделать это. –

ответ

1

, как @Spencer Wieczorek упоминается в комментариях .. код хорошо .. но если вам нужно, чтобы упростить его немного .. или просто нужно знать еще один способ сделать это

$(document).ready(function() { 
     var json = [{"name":"Meee","time":"07_24"}]; 

     for (var i = 0; i < json.length; i++) { 
      var Splittime = json[i].time.split('_'); 
      var all_time = Splittime[0]+':00-'+((Splittime[1] == 24)? '23:59' : Splittime[1]+':00'); 
      tr = $('<tr/>'); 
      tr.append("<td>" + json[i].name + "</td><td>" + all_time + "</td>"); 
      $('table').append(tr); 
     } 
    }); 

Working Demo другого Demo

0

http://jsfiddle.net/xfdqj6oo/2/

var formatTime = function(time) { 
    return time.split('_').map(function(hour) { 
     return hour === '24'? '23:59': hour + ':00'; 
    }).join('-'); 
} 

$(document).ready(function() { 
    var json = [{"name":"Meee","time":"07_24"}]; 

    for (var i = 0; i < json.length; i++) { 
     tr = $('<tr/>'); 
     tr.append("<td>" + json[i].name + "</td>"); 
     tr.append("<td>" + formatTime(json[i].time) + "</td>"); 
     $('table').append(tr);    
    } 
}); 

В основном есть функция заботиться о времени форматирования/преобразования.

0

Вы можете написать довольно простое регулярное выражение, чтобы сделать это:

var new_string = "some string 07_23 bla bla".replace(/([0-2][0-9])_24/g,"$1:00-23:59").replace(/([0-2][0-9])_([0-2][0-9])/g,"$1:00-$2:00"); 

, который выводит «бла-бла некоторая строка 07: 00-23: 00 бла-бла»

0

Вы меняете всегда та же самая часть поэтому использовать регулярное выражение не нужно. Потому что вам просто нужно изменить _ на: 00- и с 24:00 до 23:59, это постоянно, поэтому вам не нужно регулярное выражение.

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