2017-12-07 7 views
-1

に隣接する空白の除去:目標:私がやっている何を、特定の文字

私がやろうとしています何
> ' { foo (bar: 8) { baz: 9 fun: bun } } '.replace(/\s[{}():]\s/g, ''); 
< "foobar: 8{ baz: 9 fun: bun} " 

:これは、クライアントから送信するためのクエリを圧縮に関係しています

> ??? 
< "{foo(bar:8){baz:9 fun:bun}}" 

graphqlサーバー。 ;-)

答えて

1

正規表現はあなたのニーズに合っていないのではないかと思いますが、適切なライブラリがはるかに適切です。

一方、.replace(/\B | \B/, "")に試してみることもできますが、確かにすべてのケースをカバーしているわけではなく、確かに一部のリクエストが壊れてしまいます。これはあなたの例を少なくともカバーします。

+0

ええ、私はある種の軽量レクサーが少し必要だと思いました。私の邪悪な部分は、どういうわけかそれらのコーナーをカットできると思っていました。とにかく、これは私が確認する必要があるので、私はこの答えを受け入れるでしょう。 – jerome

+1

別の外部依存関係を避けようとしていましたが、これは私が必要としていることです:https://www.npmjs.com/package/graphql-query-compress – jerome

+0

@jerome – sp00m

1

あなたは、スペースなしで文字を置き換えるために正規表現でキャプチャグループを使用する必要があります。

> '{ foo (bar: 8) { baz: 9 fun: bun } } '.replace(/\s*(\[|\]|\{|\}|\(|\)|\:)\s*/g, '$1') 
< "{foo(bar:8){baz:9 fun:bun}}" 

括弧式をキャプチャし、$1あなたがこの表現を使用することができます。

+0

ありがとうございます。軽量で、完全なレクサーよりシンプルです。パフォーマンスについての不思議、私は次のことを見てみましょう。 – jerome

関連する問題