Can we use String.format() to pad/prefix with a character with desired length?
You can use this hackish way to get your output:
String sendID = "AABB";
String output = String.format("%0"+(32-sendID.length())+"d%s", 0, sendID);
Demo: http://ideone.com/UNVjqS
You can't use String.format()
for padding with arbitrary characters. Perhaps Apache Commons StringUtils.leftPad() would be of use for a concise solution ? Note there's also a StringUtils.rightPad()
too.
I just add some Java 8 code if someone need it in future:
public class App {
public static void main(String[] args) {
System.out.println(leftpad("m m", 2, '@'));
System.out.println(leftpad("m m", 5, '@'));
}
static String leftpad(String s, int nb, char pad) {
return Optional.of(nb - s.length())
.filter(i -> i > 0)
.map(i-> String.format("%" + i + "s", "").replace(" ", pad + "") + s)
.orElse(s);
}
}
This version supports adding any char as padding
You can do as below if you really want to use String.format
,
String sendID = "AABB";
String.format("%32s", sendID ).replace(' ', '0')
Other than String.format
you can find many solutions here.
Edit: Thanks for Brian to point of the issue. The above wont work for input with spaces. You can try as below. But I wont suggest the below operation as it has too many string operation.
String sendID = "AA BB";
String suffix = String.format("%32s", "").replace(' ', '0') + sendID;
sendID = suffix.substring(sendID.length());
You can also try using StringUtils.leftPad
StringUtils.leftPad(sendID, 32 - sendID.length(), '0');