65

I'm using String.format() in Java trying to emulate the printf() control channel available in C. I understand how to specify that a string should be placed in a field which takes 20 characters, 5, 2 ... with 3 decimals, 2, etc. However, the strings are printed right-aligned in their field.

How do I left-align the strings?

Here's an example of a possible output which I would like to modify to left-align EXECUTING and CREATED in their fields.

Process PID: 25    Status: -----------       EXECUTING
Process PID: 36    Status: READY-SUSPENDED
Process PID:  4    Status: ----------------        CREATED

*note: consider '-' as an empty space

3 Answers 3

118

Same way as with printf -- use a - modifier in the format

Sign up to request clarification or add additional context in comments.

2 Comments

And if you're using the position specifier, String.format("%1$-10s", "test")
Can you include an example in your answer?
10
System.out.format("%-10d%-32s%-16s%-16s%-32s", obj.getId(), obj.getBname(), obj.getAname(),obj.getLanguage(),obj.getPublication());

Just add hyphen - in front of the number.

Comments

0

Like this?

class F { 
  public static void main( String ... args ) { 
    String [] status =  { "EXECUTING", "READY-SUSPENDED", "CREATED" };
    int [] pids =  {123, 34, 1231 };
    int i = 0;
    for( String s : status ) { 
       System.out.printf("Process PID: %5d Status : %s%n", pids[i++], s);
    }  
  }
}

Output:

$java F
Process PID:   123 Status : EXECUTING
Process PID:    34 Status : READY-SUSPENDED
Process PID:  1231 Status : CREATED

2 Comments

This isn't left justified, though. That requires the use of the '-'.
System.out.printf("Process PID: %5d Status : %s\n", pids[i++], s);

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.