Gibt es eine Möglichkeit, ein Format für java.text.MessageFormat zu definieren, das Zahlen ohne Gruppierung von Trennzeichen und andere Objekte mit .toString() formatiert?java.text.MessageFormat ohne Gruppierung von Trennzeichen für Zahlen
Mein Problem ist, dass ich ein Argument formatieren muss, für das ich nicht im Voraus weiß, ob es eine Nummer ist oder nicht. Wenn ich nur
java.text.MessageFormat.format("The object: {0}",someobject)
, die in der Regel nur Anrufe someobject.toString()
wie ich will, aber wenn someobject
ist tatsächlich eine Reihe 1231231
, gibt es (in der deutschen locale) The object: 1,231,231
, aber ich will The object: 1231231
hier. Formatieren mit
java.text.MessageFormat.format("{0,number,#}",1231231)
kehrt The object: 1231231
, aber das funktioniert nicht, wenn das Argument nicht eine Zahl ist. Gibt es eine Möglichkeit, ein Format anzugeben, das sowohl für Zahlen als auch für andere Objekte funktioniert?
(Falls Sie sich wundern: leider ist da keine Option das Gebietsschema des Message ändern, dass tief in JBoss' Logging-Framework und unzugänglich vergraben.)
UPDATE: String.valueOf Aufruf (someobject) vor der Übergabe als Argument löst dieses Problem, ist aber auch in meinem Fall nicht durchführbar, da dieses Problem bei der Protokollierung auftritt, und ich möchte nicht die potenziell teure someobject.toString() aufrufen, wenn die Protokollierungsstufe doesn Ich erlaube die Protokollnachricht nicht und das MessageFormat wird somit nie angewendet.
[Hier] (http://stackoverflow.com/questions/1942118/how-doi-format-a-long-integer-as-a-string-without-separator-in-java) sie vorschlagen, anzurufen 'Long.toString()' auf die Nummer, die Sie ohne Kommas benötigen, und [es scheint zu funktionieren] (http://ideone.com/1wBpV5) – BackSlash