jQuery使用replace()函数为字符串

时间:2015-11-11 03:46:47

标签: jquery json replace

我有一个来自json的特殊时间格式,例如: 07_23 表示 07:00 - 23:00 ,当它显示 24 时,例如: 07_24 它应该更改为 07:00 - 23:59

我的代码在这里:

$(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 ,然后更改 24 23:59 ?或者我可以使用正则表达式来实现这个目标吗?

4 个答案:

答案 0 :(得分:1)

正如@Spencer Wieczorek在评论中提到的..你的代码很好..但是如果你需要简化一点......或者只是需要知道另一种方法来做到这一点

.artists table img{
    width: 100%;
}

Working Demo另一个Demo

答案 1 :(得分: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);            
    }
}); 

基本上有一个功能可以处理时间格式化/转换。

答案 2 :(得分: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");

输出&#34; bla bla some string 07:00-23:00 bla bla&#34;

答案 3 :(得分:0)

您始终更改相同的部分,因此不必使用正则表达式。因为你只需要将_改为:00-和24:00改为23:59它是常数,所以你不需要正则表达式。