2017-04-14 10 views
0

私は範囲MySQLTablesRangeを持っています。 aa_1 bb_1 aa_2 bb_2 aa_3 bb_3レンジからペアを作るには?

std.algorithmが同様のことをやっていること方法groupを持っていますが、私はコードでそれを書く方法を知らない:私はのようなペアを作成する必要が aa_1 aa_3 aa_2 bb_2 bb_1 bb_3

:ようですデータを構成されています。

MySQLTablesRange.each!(a => a.split("_")[1].array.group.writeln);

をしかしgroupはなく、単一の要素と、配列で動作するので、それは、間違っている:私はやりました。

アイデア?

答えて

1

更新:これをテストした後、私はあなたが望む 'グループ'ではないことに気付きました。しかしチャンク。それを反映する答えを更新しました。 https://dlang.org/phobos/std_algorithm_iteration.html#chunkBy

は、あなたはどのようにチャンクデータの2つのグループを作成します

[1,2,3,4,5,6] 
    .sort!((a,b) => a%2 > b%2)  // separate odds n evens 
    .chunkBy!((a,b) => a%2 == b%2); // chunk them so all evens are in one range, odds in another. 

... chunkByを伝える必要があります。 1つは奇数であり、1つは偶数である。

あなたの場合は、各要素の '_'の後にくるテキストにグループ化するように見えます。

"aa_1 aa_2 aa_3 bb_1 bb_2 bb_3 cc_1" 
    .split(" ") 
    .sort!((a,b) => a[$-1].to!int < b[$-1].to!int) // sort it so _1's are together, _2s are together. etc 
    .chunkBy!((a,b) => a[$-1] == b[$-1]) // chunk them so they're in they're own range 
    .each!writeln; // print each range 

$ rdmd test.d 
["aa_1", "bb_1", "cc_1"] 
["aa_2", "bb_2"] 
["aa_3", "bb_3"] 

理想的には_のインデックスを取得し、その後比較...

+0

そして、私はないaa_1が、aa_123を持っているならば何になりますでしょうか? $からのマイナス1は間違った結果を得るでしょう... –

+0

ええ、私はあなたのために '_'のインデックスを取得し、それを比較する理由を述べています。私はあなたのためにそれをすべて書くことはできません;) –

関連する問題