我有一个使用网络服务器在线提供的纯文本文件。它是一个具有以下格式的日志:
[00:24:48] <username> message text goes here
我想制作一些javascript来逐行格式化日志,并将不同的样式应用于时间戳,用户名和消息。如何逐行阅读文本并应用css样式?
答案 0 :(得分:3)
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"><$1></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"><$1></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),具体取决于输入。