我有一个像这样的文本字符串:
1398097442.61 INFO Some Name: Some Thing ...9381
我想将开头的数字转换为人类可读的日期时间。
我正在做的是这样的:
input.replace(/^(\d+\.?\d*)/g, new Date(parseFloat("$1") * 1000).toGMTString());
这行不通。如果我只是重新打印匹配“$1”,那就没问题了。我怎样才能操纵比赛?
最佳答案
只需确保传递一个要替换的函数(毕竟,这不是 Scala):-)
input.replace(/^(\d+\.?\d*)/g, function(match, timestamp) {
return new Date(parseFloat(timestamp) * 1000).toGMTString();
});
您的做法根据对字符串“$1”调用parseFloat
的结果创建了一个日期,然后获取结果(NaN
) 并将其传递给 Date
构造函数并得到一个 GMT 字符串 - 然后将其用作正则表达式的替换字符串。
您想要要做的是推迟执行new Date
代码,直到找到匹配项。自 String.prototype.replace
可以将函数作为第二个参数,我们只需将 new Date
行为包装在函数中,一切都会正常工作。
关于javascript - 操作 .replace() 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23279420/