public class Divers { public static void main(String args[]){ String format = "|%1$-10s|%2$-10s|%3$-20s|\n"; System.out.format(format, "FirstName", "Init.", "LastName"); System.out.format(format, "Real", "", "Gagnon"); System.out.format(format, "John", "D", "Doe"); String ex[] = { "John", "F.", "Kennedy" }; System.out.format(String.format(format, (Object[])ex)); } }
output:
|FirstName |Init. |LastName | |Real | |Gagnon | |John |D |Doe | |John |F. |Kennedy |
I want the output to be centered. If I do not use '-' flag the output will be aligned to the right.
I did not find a flag to center text in the API.
This article has some information about format, but nothing on centre justify.
You can now use StringUtils. center(String s, int size) in String. format .
If the width is positive, right-alignment is used; if it is negative, left-alignment. For example string. Format("{0,-5}", obj) versus string. Format("{0,5}", obj) where obj is some object whose string representation is less than five characters long.
Text Alignment You can align values within a specified length of text by using the < , > , or ^ symbols to specify left align, right align, or centering, respectively.
For right align use +ve %ndformat("%4d", i * j); //each number formatted to a width of 4 so use %4d in the format method. } System. out. println(); // To move to the next line. }
I quickly hacked this up. You can now use StringUtils.center(String s, int size)
in String.format
.
import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; import org.junit.Test; public class TestCenter { @Test public void centersString() { assertThat(StringUtils.center(null, 0), equalTo(null)); assertThat(StringUtils.center("foo", 3), is("foo")); assertThat(StringUtils.center("foo", -1), is("foo")); assertThat(StringUtils.center("moon", 10), is(" moon ")); assertThat(StringUtils.center("phone", 14, '*'), is("****phone*****")); assertThat(StringUtils.center("India", 6, '-'), is("India-")); assertThat(StringUtils.center("Eclipse IDE", 21, '*'), is("*****Eclipse IDE*****")); } @Test public void worksWithFormat() { String format = "|%1$-10s|%2$-10s|%3$-20s|\n"; assertThat(String.format(format, StringUtils.center("FirstName", 10), StringUtils.center("Init.", 10), StringUtils.center("LastName", 20)), is("|FirstName | Init. | LastName |\n")); } } class StringUtils { public static String center(String s, int size) { return center(s, size, ' '); } public static String center(String s, int size, char pad) { if (s == null || size <= s.length()) return s; StringBuilder sb = new StringBuilder(size); for (int i = 0; i < (size - s.length()) / 2; i++) { sb.append(pad); } sb.append(s); while (sb.length() < size) { sb.append(pad); } return sb.toString(); } }
public static String center(String text, int len){ String out = String.format("%"+len+"s%s%"+len+"s", "",text,""); float mid = (out.length()/2); float start = mid - (len/2); float end = start + len; return out.substring((int)start, (int)end); } public static void main(String[] args) throws Exception{ // Test String s = "abcdefghijklmnopqrstuvwxyz"; for (int i = 1; i < 200;i++){ for (int j = 1; j < s.length();j++){ //center(s.substring(0, j),i); System.out.println(center(s.substring(0, j),i)); } } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With