0

私は 2 つの初歩的なミスのいずれかを犯している状況に陥っていました。

  1. ライブラリから取得するコードを書く
  2. より優れたパターン化を使用して大幅に簡素化できる超複雑なコードを作成する

私がやろうとしていることは非常に単純です。オブジェクトからページにフィールドを出力する JavaScript コードに命令を送る必要があります。次の文字列は問題なく始まりました。

message, tags, date

を使用して、オブジェクトからこれらの要素を取得するようにコードに簡単に指示します。

field_array = instruction_string.split(',')

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

その後、私がいるタイム ゾーンを反映するようにその日付フィールドを変更したいことに気付きました。フィールドの特別な指示を文字列で実行できるようにすると、正規表現が少し複雑になりましたが、それほど複雑ではありませんでした。

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'

正規表現を修正する方法はおそらくありますが、これは、カスプからカスタム コードを記述して長時間それをいじるのではなく、ツールまたは確立されたパターンを使用してこれを行う必要があることを示しています。

4

1 に答える 1

1

これに文字列と正規表現を使用してもよろしいですか?

別の方法は、印刷するフィールドを定義するために配列とオブジェクトを使用することです。

このようなもの:

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

name確実に出力された値を取得するには、配列を反復処理してフィールドを探すことができます。名前の付いたオブジェクトを見つけた場合はdate、追加のプロパティを探すことができます。新しいプロパティを非常に簡単に追加することもできます。

于 2013-01-12T18:45:31.233 に答える