Java - truncate string from left with formatter flag

前端 未结 3 882
半阙折子戏
半阙折子戏 2020-12-11 15:34

I have a string, say:

String s = \"0123456789\";

I want to pad it with a formatter. I can do this two ways:

String.format(\         


        
相关标签:
3条回答
  • 2020-12-11 15:47

    The - flag is for justification and doesn't seem to have anything to do with truncation.

    The . is used for "precision", which apparently translates to truncation for string arguments.

    I don't think format strings supports truncating from the left. You'll have to resort to

    String.format("[%.5s]", s.length() > 5 ? s.substring(s.length()-5) : s);
    
    0 讨论(0)
  • 2020-12-11 15:59

    You could also use method for manipulating Strings

    substring(startindex, endIndex)
    

    Returns a string object that starts a the specified index an goes to, but doesn't include, the end index.

    And also could try to use StringBuilder class.

    0 讨论(0)
  • 2020-12-11 16:01

    I hope this is what you need:

    System.out.println("'" + String.format("%-5.5s", "") + "'");
    System.out.println("'" + String.format("%-5.5s", "123") + "'");
    System.out.println("'" + String.format("%-5.5s", "12345") + "'");
    System.out.println("'" + String.format("%-5.5s", "1234567890.....") + "'");
    

    output length is always 5:

    '     ' - filled with 5 spaces
    '123  ' filled with 2 spaces after
    '12345' - equals
    '12345' - truncated

    in addition:

    System.out.println("'" + String.format("%5.5s", "123") + "'");
    

    output:

    '  123' filled with 2 spaces before

    0 讨论(0)
提交回复
热议问题