2009-06-18 5 views
6

現在のコード:Groovyの文字列の連結

row.column.each(){column -> 
    println column.attributes()['name'] 
    println column.value() 
} 

Columnは、単一の属性と単一の値を持つNodeです。私はxmlを解析して、insertステートメントをアクセス用に作成します。以下の構造化された文を作成するためのGroovyの方法があります:

Insert INTO tablename (col1, col2, col3) VALUES (1,2,3) 

私は現在、正しい順序にそれらをポップその後、別々の配列に属性と値を格納しています。

答えて

18

私は、それが現在受け入れられている答えよりもはるかに簡単だと思います。収集と結合の方法は、この種のもののために構築されています。参加自動的

def names = row.column.collect { it.attributes()['name'] }.join(",") 
def values = row.column.collect { it.values() }.join(",") 
def result = "INSERT INTO tablename($names) VALUES($values)" 
+1

これは完全に機能しました!私のセットアップはtable.row.columnだったので、$ {table.attributes()['name']}を使用してtablenameを取得しました – XanderLynn

0

2つのStringBuilderを使用できます。ラフとテストされていないこのような何か、:

def columns = new StringBuilder("Insert INTO tablename(") 
def values = new StringBuilder("VALUES (") 
row.column.each() { column -> 
    columns.append(column.attributes()['name']) 
    columns.append(", ") 
    values.append(column.value()) 
    values.append(", ") 
} 
// chop off the trailing commas, add the closing parens 
columns = columns.substring(0, columns.length() - 2) 
columns.append(") ") 
values = values.substring(0, values.length() - 2) 
values.append(")") 

columns.append(values) 
def result = columns.toString() 

あなたはGroovyの文字列操作演算子hereのすべての種類を見つけることができます。

+1

Groovyではあなたは、コードをより多く作るのではなく、「<<」を使用してのStringBuilder「(追加)」を追加することができ、文字列に末尾のコンマを入れていないにも連結の世話をし、読めるIMO –