2013-01-12 53 views
0

發現自己在我在那裏做一個情況的一個好辦法的兩位新秀的錯誤之一:實現字符串標記(或使用已經建立了一個)

  1. 編寫的代碼,我應該得到一個圖書館
  2. 寫超級複雜的代碼,可以使用更好的構圖

我試圖做的是非常簡單的,我需要發送指令到打印領域從對象到頁面的一些JavaScript代碼可以大大簡化。事情開始了罰款,以下字符串:

message, tags, date 

輕鬆指示代碼即可獲得從對象這些元素使用

field_array = instruction_string.split(',') 

obj['message'], obj['tags'], obj['date'] 

這時我才意識到,我想修改日期字段,以反映時間我區在啓用字符串進行特殊說明的現場平添了幾分複雜性的正則表達式,但仍然不是太複雜:

message, tags, date(GMT-5) 

使用鱈魚E:

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' 

雖然有可能是固定的正則表達式的方式,這表明我應該使用的工具或建立p attern來做這件事,而不是從客戶端編寫定製代碼,並使用它太長時間。

回答

1

您確定要爲此使用字符串和正則表達式嗎?

另一種方法是使用數組和對象來定義應打印的字段。

事情是這樣的:

var fields = [{ 
    name: 'message' 
}, { 
    name: 'tags' 
}, { 
    name: 'date', 
    timezone: 'GMT-5', 
    since: new Date() // now 
}]; 

對於來自獲得的價值肯定要打印您可以迭代這個數組並查找name領域。如果您找到名稱爲date的對象,則可以查找其他屬性。你也可以很容易地添加新的屬性。

+0

問題是,信息需要來自一個字符串。最終,它可以在類似的對象中,但它需要以字符串的形式出現。 –

+0

如果字符串是JSON,它可以平凡地轉換爲這樣一個對象。 – ebohlman

相關問題