1

「1234」などの文字列を「1.2.34」に変換するために、Javaフォーマッタ クラスから外れるハイブの「printf」関数を使用したいと考えています。または、「4321」を「4.3.21」などにします。理想的には、次のようになります。

SELECT PRINTF("x.x.xx", "4321");
// -> 4.3.21

これは可能ですか?もしそうなら、フォーマット文字列は何ですか?

string concat でも同じことができることはわかっていますが、そうはしません。私はハイブで作業しています.「1234」は高価な正規表現の結果です.正規表現を3回実行したり、サブクエリを使用したりせずに、これを1ステップで取得したいと考えています.

編集:明確にするために、これはハイブにあります。事前に明確にしておらず申し訳ありません。

4

2 に答える 2

0

これは、さらなるニーズに役立つ場合があります。

formatter = new DecimalFormat("#.#");
s = formatter.format(-1234.567);         // -1234.6

編集。 小数点が含まれていない場合、フォーマッターを使用してこれを達成できるかどうかはわかりません。文字列を使用した以前の作業を行う必要があるようです。デビッドの答えを確認してください。

于 2012-08-08T19:59:53.867 に答える
0
String[] stringArray = "1234".split("");
// This will have a leading array entry of empty string, so chop it off somehow
// EDIT: had the pattern wrong, fixed it
System.out.println(String.format("%s.%s.%s%s", Arrays.copyOfRange(stringArray, 1, stringArray.length)));
于 2012-08-08T20:13:59.650 に答える