在我犯了两个新手错误之一的情况下:
我想要做的非常简单,我需要向一些JavaScript代码发送指令,这些代码将字段从一个对象打印到页面。事情一开始很好,下面的字符串:
message, tags, date轻松地指示代码从对象中获取这些元素。
field_array = instruction_string.split(',')
obj['message'], obj['tags'], obj['date']然后,我意识到我想修改那个日期字段,以反映我所在的时区。使用regex使字符串能够为字段携带特殊指令增加了一些复杂性,但仍然不太复杂:
message, tags, date(GMT-5)使用代码:
var special_instruction = /\(.*\)/ig.exec('date(GMT-5)')[2]
RESULT: special_instruction = 'GMT-5'我意识到,当我意识到我也想让输出调整日期,以便它反映现在起的时间增量,而不是打印实际日期的时候,我感到有点过头了:
message, tags, date(GMT-5_)(SINCE_NOW)我写的正则表达式不起作用:
var special_instruction = /\((.*)\)/ig.exec('last_updated(GMT-5)(since_now)')
RESULT: special_instruction = 'GMT-5)(since_now'尽管可能有一种方法来修复regex,但这表明我应该使用一个工具或已建立的模式来完成这个任务,而不是将自定义代码从尖处写下来,花很长时间来处理它。
发布于 2013-01-12 18:45:31
您确定要为此使用字符串和正则表达式吗?
另一种方法是使用数组和对象来定义应该打印的字段。
就像这样:
var fields = [{
name: 'message'
}, {
name: 'tags'
}, {
name: 'date',
timezone: 'GMT-5',
since: new Date() // now
}];要从其中获得值,一定要打印出来,您可以在数组中迭代并查找name字段。如果您找到一个名为date的对象,则可以查找其他属性。您也可以很容易地添加新的属性。
https://stackoverflow.com/questions/14296533
复制相似问题