Próbuję sformatować ciąg w java, używając klasy MessageFormat
. Ciąg zawiera pole pozycyjne, ale działa tylko wtedy, gdy podam numer pola. Na przykładAutomatyczne numerowanie pól w formatowaniu ciągów znaków
MessageFormat.format("{0} {1}", "Hi", "Java")
prace ale
MessageFormat.format("{} {}", "Hi", "Java")
daje
Exception in thread "main" java.lang.IllegalArgumentException: can't parse argument number:
at java.text.MessageFormat.makeFormat(MessageFormat.java:1429)
at java.text.MessageFormat.applyPattern(MessageFormat.java:479)
at java.text.MessageFormat.<init>(MessageFormat.java:362)
at java.text.MessageFormat.format(MessageFormat.java:840)
at controller.App.main(App.java:11)
Caused by: java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
at java.lang.Integer.parseInt(Integer.java:592)
at java.lang.Integer.parseInt(Integer.java:615)
at java.text.MessageFormat.makeFormat(MessageFormat.java:1427)
czy istnieje sposób (innej klasy lub biblioteki), że może obsługiwać zarówno automatyczne i ręczne polu numerowania coś jak python robi?
In [3]: print "{} {}".format("Hi", "Java")
Hi Java
In [4]: print "{0} {1}".format("Hi", "Java")
Hi Java
Jeśli nie chcesz, aby zapewnić indeksy, a następnie użyć 'String.format' zamiast. – Tom
Tak, mogę to zrobić, ale mam przypadek użycia, gdzie mogę uzyskać ciąg z lub bez indeksów – barunsthakur