9

入力の最後の文字が使用されるようにString.format引数を設定する可能性はありますNか?つまり、次のようになります。

String s = String.format("%1${N}s", "abcdef");

s含まれているので"def"?これは、次のように言うことができるスクリプト言語で一般的です。

exp = "abcdef"
s = exp[-3]

編集

OK、だから私は自分のデータをフォーマットして関数に入れるときにそれを処理したくありませんString#format。これが、ここでのフォーマットの説明の要点です。このフォーマットの説明はモジュール性の形式を表しており、フォーマッターが来るにもかかわらず、入力データを事前にフォーマットする必要がある場合はかなり壊れています...

4

3 に答える 3

2

残念ながら、現在 (y2017) でもJava 8 Formatterは「部分文字列」をサポートしていません。

あなたが試すことができます:

  • フリーマーカーとslicing (substrings):

    // string 'abcde', evaluates to "bcd"
    <#assign s="abcde">
    ${s[1..3]}
    
  • Spring 式言語 (SpEL) およびexpressions methods:

    // string literal 'abcde', evaluates to "bcd"
    ExpressionParser parser = new SpelExpressionParser();
    String sub = parser.parseExpression("'abcde'.substring(2, 4)").getValue(String.class);
    
于 2017-02-20T12:20:27.260 に答える
0

String.formatこの種の機能があるかどうかはわかりません。でも の機能をString使えば実現できます。

    int n = 10;
    String a = "01234567891234";

    // Split into to strings.
    String lastString = a.substring(a.length() - n);
    String firstString = a.substring(0, a.length() - n);

    // Format second string and result is concatenated with first.
    String formattedLastString = String.format("%15s", lastString);
    String formattedString = firstString.concat(formattedLastString);
于 2012-09-24T12:23:50.907 に答える
0

String#substring(int index)スクリプト例と同じことを行います:

String a = "abcdef";
String b = String.format("%s", a.substring(3));
于 2012-09-24T12:04:31.130 に答える