Javascript:逐行向文件添加样式

时间:2011-09-01 01:31:23

标签: javascript html css styles

我有一个使用网络服务器在线提供的纯文本文件。它是一个具有以下格式的日志:

[00:24:48] <username> message text goes here

我想制作一些javascript来逐行格式化日志,并将不同的样式应用于时间戳,用户名和消息。如何逐行阅读文本并应用css样式?

2 个答案:

答案 0 :(得分:3)

Example

var line = "[00:24:48] <username> message text goes here";
// stamp
line =  line.replace(/(\[[0-9]{2}:[0-9]{2}:[0-9]{2}\])/, '<span class="stamp">$1</span>');
// username
line =  line.replace(/<([a-zA-Z]+)>/, '<span class="user">&lt;$1&gt;</span>');

$('#id').html('<div class="message">' + line + '</div>');

我会使用jQuery for the ajax,因为它实现起来非常简单:

$.ajax({
    type: 'GET',
    url: '/log.txt',
    success: function(lines) {
        processLines(lines.split('\n'));
    }
})

function processLines(arrayOfLines) {
    for (var i = 0; i < arrayOfLines.length; i++) {
        var line = arrayOfLines[i]; //"[00:24:48] <username> message text goes here";
        // stamp
        line = line.replace(/(\[[0-9]{2}:[0-9]{2}:[0-9]{2}\])/, '<span class="stamp">$1</span>');
        line = line.replace(/<([a-zA-Z]+)>/, '<span class="user">&lt;$1&gt;</span>');

        $('#id').html('<div class="message">' + line + '</div>');
    }
})

答案 1 :(得分:0)

您可以使用正则表达式生成单个HTML字符串:

var t = ' [00:24:48] username message text goes here ';
var r = /(\[)([^\]]+)(\] +)(\S+)/g;
var html = t.replace(r, '<span class="timestamp">$2<\/span>' +
                        '<span class="username">$4<\/span> <span class="message">') +
                        '<\/span><br>';

//  <span class="timestamp">00:24:48</span><span class="username">username</span>'
//  <span class="message"> message text goes here </span><br>

虽然你可能需要使用多行标志(m),具体取决于输入。