1

grails selectタグから値を取得しているので、jQueryが取得している余分な文字を取り除き、文字列をフォーマットしてから、BIRTレポートサーバーに渡す必要があります。

grailsのリストは次のようになります。

Term:
    [201360, Continuing Ed Automn 2013]
    [201350, Summer Session 2013]
    ...
College
    [AS, College of Arts and Sciences]
    [BA, College of Business Administration]
    ...

これは、両方の選択リストで選択が行われたときにjQueryによってシリアル化されるものの例です。

Term=%5B201360%2C+Continuing+Ed+Autumn+2013%5D&College=%5BBA%2C+School+of+Business+Admin%5D 

最終的な値を次のようにしたいと思います

Term=201360&College=BA

ストレートサブストリングを実行する際の問題は、変数の数が変更される可能性があり、どちらもオプションであるということです。1つある場合もあれば、20ある場合もあります。

必要な部分だけを抽出するにはどうすればよいですか?

4

1 に答える 1

2

なぜそのようなデータになってしまうのかわかりません。ともかく:

// I guess + mean space here, so I convert it back to space before
// doing percentage unescape
var convertedInput = unescape(inputString.replace(/\+/g, ' '));
var output = convertedInput.replace(/\[ *([^,]+?) *,[^\]]+\]/g, '$1')

正規表現は必要以上に複雑に見えるかもしれませんが、内部の最初の項目で余分な先頭と末尾のスペースがある場合は削除します[]

説明:

\[ *([^,]+?) *,[^\]]+\]
  • 正規表現全体が、フォームのキーと値のペアの値の部分と一致しようとしますkey=[item1, item2, ...]。最初のアイテムをキャプチャし、残りを破棄します。
  • \[\]はリテラル[]文字です。
  •  *([^,]+?) *,:先頭のスペースを食べます *([^,]+?)次に、コンマがないと想定されるトークンを消費してキャプチャします。[^,]遅延数量詞のため+?、シーケンスに遭遇する前に消費する量は可能な限り少なくなります。オプションのスペースの後に(最初の)コンマが続きます *,
  • [^\]]+:そうでないものはすべて消費します(そして後で捨てます)]](または文字列の終わりですが、ここではそうではありません)で停止します。

仮定:

  • []バランスが取れており、入れ子はありません。
  • ,抽出するアイテム内にコンマはありません。
  • 変更するキーと値のペアは、次の形式です。key=[item1, item2, ...]
于 2013-02-07T21:07:58.073 に答える