問題タブ [gstring]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
2923 参照

string - Groovy: ${} 内の変数のネストされた評価

Groovyのように「$-Strings」のネストされた評価を行う方法があります。

結果は次のようになります。

これを解決しようとしても、適切な結果が得られない (例: obj.street} のみ) か、まったくコンパイルされません。これまでのところ、概念全体を理解していないようです。しかし、これを見ると: http:// groovy.codehaus.org/Strings+and+GString可能だと思います。

0 投票する
3 に答える
211118 参照

string - Groovy による文字列連結

Groovyで文字列を連結するための最良の(慣用的な)方法は何ですか?

オプション1:

オプション 2:

古い Groovy の Web サイトで、このトピックに関する興味深い点を見つけました。

Java と同様に、「+」記号を使用して文字列を連結できます。しかし、Java が必要とするのは、"+" 式の 2 つの項目のうちの 1 つだけが文字列である必要があります。それが最初にあるか最後の項目にあるかは関係ありません。Java は、「+」式の非 String オブジェクトで toString() メソッドを使用します。しかし、Groovy では、"+" 式の最初の項目が正しい方法で plus() メソッドを実装していることに注意してください。Groovy はそれを検索して使用するからです。Groovy GDK では、文字列を連結するために plus() メソッドが実装されているのは Number および String/StringBuffer/Character クラスだけです。驚きを避けるために、常に GStrings を使用してください。

0 投票する
1 に答える
509 参照

c - mallocによって返されるポインタを変更できますか

個人的なプロジェクトのプログラミング中に、ある関数へのポインターを渡したときに、その値を変更できないことがわかりました。例:

デバッガーを監視した後、バッファー実行のメモリ割り当て時に、buf = 0x80b720およびotherfunc()が0x80b750を返すことを確認しました。バッファの値は変更されませんでしたが。それで、なぜこれが起こるのか、そしてこれがmalloc()の一般的な特徴であるかどうか誰かが知っているかどうか尋ねたいと思います。つまり、malloc()呼び出しによって返されたポインターを関数に渡すと、この値を関数本体の内部または外部で変更できますか?

0 投票する
3 に答える
2287 参照

c - g_slice_alloc の segfault

次の行で関数を呼び出しています。

g_string_sized_new の行で segfault が発生しています。gdb からのバックトレース:

G_SLICE=always-malloc をエクスポートしてみたので、glib 独自のアロケーターの代わりに malloc が使用されます。ただし、問題は同じままです。g_slice_alloc でまだ segfault が発生しています。また、この関数「call_system_command」を複数のスレッドから呼び出しています。それは問題になるでしょうか?

この関数は、15 分ごとに cron によって呼び出されるプラグインの一部です。segfault は、プラグインが実行されるたびに発生するのではなく、3 ~ 4 日ごとに発生します。

さらにデバッグするための指針は役に立ちます。

前もって感謝します。

0 投票する
2 に答える
3464 参照

groovy - GStrings を変数に格納し、実行時に評価する

マップにいくつかの GString を保存しており、実行時に次のように評価しようとしています。

上記のコードではエラーが発生しますが、以下のコードが実行されます。

違いを見るとわかるように、最初のスクリプトではプレースホルダー文字列がバインディングの前に宣言されていましたが、2 番目のスクリプトではバインディングの後に宣言されていました。私のアプリケーションでは、クライアントの要求に基づいて実行時にプレースホルダー文字列を評価する必要があるため、最初の状況と同様のことをしたいと考えています。

  • リクエストが来たら、 を使用して適切な値を取得する必要がありますplaceholderStrings.get(keyFromParams)
  • 上記で取得した文字列のバインディングのプレースホルダーを置き換えます。

問題は、を呼び出すplaceholderStrings.get(keyFromParams)たびに、文字列内のプレースホルダーを置き換えようとし、例外をスローすることです。

問題を解決するために、次のような一重引用符で囲まれた文字列として placeholderString 値を保存しようとしました。

しかし、プレースホルダーを置き換えることができるように、上記のマップの値を GString に変換する方法がありません。

0 投票する
1 に答える
692 参照

templates - 名前によるテンプレートのプロパティへのアクセス

次のコードが与えられた場合:

グルーヴィー:

test.template:

test.template の keyName で val1 にアクセスする方法はありますか?

これ:

機能しません (そのようなプロパティはありません: クラスの key1: groovy.lang.Binding)。何か案は?プロパティを保持しているマップの名前が違うのではないでしょうか?

私はただ書くことができることを知っています:

しかし、変数 keyName を使用してプロパティ key1 にアクセスする必要があります。

0 投票する
1 に答える
411 参照

java - Groovy GString 変数の二重置換

Groovy スクリプトがあります。私が提供するバインディングを介してJavaで:

GroovyShell 経由でスクリプトを実行すると、次のようになります。

印刷します

別のメソッドを呼び出した結果として、任意のテキストがprint "${a}"どこにあるのかを知る必要があります。a実行時に名前が決定される変数を出力するだけです。これはどのように可能ですか?

明確にするためのもう1つの例:

印刷???? 'p'そして、出力'm''n'

0 投票する
1 に答える
821 参照

java - テンプレートエンジン使用時のGroovyクラスローダー例外

私はGroovyが初めてで、GStringTemplateEngineを使用してJBoss 5.1でいくつかのgroovyスクリプトを実行しようとしました

私のローカル開発環境ではすべて正常に動作しますが、別のチームが管理する開発サーバーに移動すると失敗します。

例外が具体的にスローされることがわかりました

GStringTemplateEngine.class の 190 行目

例外メッセージは

階層エラーではない URI をスローする理由がわかりません。私はそれがパーミッションと関係があり、GroovyClassLoader が生成されたクラスを解析できないと仮定しています。

誰もこのエラーを見たことがありますか? 誰かが問題のデバッグ/修正に関する提案を提供できると助かります。

0 投票する
2 に答える
2493 参照

regex - Rで文字列の途中で文字を抽出します(おそらく正規表現を使用しますか?)

私は正規表現と戦っていますが、それを理解できません。

last.fm (www.lastfm.com) から抽出した入札データベースがあります。このファイルは、各行の各列が「,」(コンマ) で区切られた .txt ファイルで、1.7 GB を超えており、R への読み取りを台無しにする文字がいくつかあります。主な問題は、他の引用符内の " (引用符) にあります。

説明するために、readLines が適用されたときの .txt ファイルの例を次に示します。

基本的に、これは10列のデータフレームになります:ユーザー名、「アーティスト」、「トラック」、愛された(0/1)、年、月、日、時、分、秒

上記の例は問題なく簡単に読むことができますが、次のようなことが起こると問題が発生します。

最初のケースでは、二重引用符が原因で、トラック名のコンマによってこれが 2 つの異なる列になり、10 列ではなく 11 列になります。2 番目のケースでは、12" は文字列を「開いた」ままにし、同様のケースが見つかるまで停止します。これが発生すると、データ フレームのいくつかの行が失われます。

解決策として何が欲しいですか?アーティストの名前とトラックの名前を囲むものを除いて、すべての " (引用符) を削除したいと思います。

出力: 出力には、各行に合計 4 つの " (引用符) があります。"アーティスト" と "トラック名" です。したがって、問題を引き起こす 2 行の出力は次のようになります。

gsub と gstring で Regex を使用しようとしましたが、余分な " マークだけを抽出することはできません。

これが複雑すぎる場合は、最初の 3 つ (アーティスト名を囲む引用符とトラック名を囲む最初の引用符) と最後の 3 つ (トラック名の最後の引用符) を除くすべての " を抽出する何かが、ほとんどの場合に機能する可能性があります。 (残りは手動で行います) ここでは、アーティスト名に引用符が含まれていないと仮定しています。

さらに詳しい説明やデータが必要な場合はお知らせください。

0 投票する
0 に答える
82 参照

groovy - GEB と GSTRING はどちらも $ を使用します

実行時に評価される SQL があります。

この SQL はConfigSlurper、GEB ページ モジュールのプロパティ ファイルを介して読み取られます。

これを実行すると、$ はページ情報を取得して取得する GEB $ に置き換えられるvalue = [:]ため、SQL は失敗します。

上記で参照した値は、GSTRING 置換の出力です -

私はこれ全体をコンテンツ内に置き、チェッカーでチェックインを行っています

デバッグを行うと、${} が BrowsePage.groovy のような GEB ページに置き換えられることがわかりました。これは、GEB の $() では通常のことです。

それを修正する方法はありますか?