You need to sign in to do that
Don't have an account?
Ralph Callaway
String.format() breaks when passing actual format strings
Anyone out there able to get String.format() to work with actual format strings as supposed to basic substitutions?
This works fine and outputs "Name foo, Value bar"
String formatString = 'Name {0}, Value {1}'; List<String> inputs = new String[] { 'foo', 'bar' }; system.debug(String.format(formatString, inputs));
But this blows up with this error: "System.StringException: Cannot format given Object as a Number"
String formatString = 'Percent: {0, number, percent}'; List<String> inputs = new String[] { '.85' }; system.debug(String.format(formatString, inputs));
I'm trying to build a user interface that will dynamically format it's output. I'd hope to have use String.format() to accomplish this.
Am I making a syntax error or doing something else wrong?
I think that the String.format is somewhat more limited than the apex:outputtext in this regard. Looking at the docs, the String.format function takes an array of strings as its arguments, rather than an array of objects (e.g. decimals, dates). Thus the only formatting that is available is to output it as a String to replace a {0}, {1} etc.
Not what I was hoping to hear, but a valid point. It's a shame we aren't able to use Java MessageFormat from within apex. I've got a lot of use cases it would really simplify things for.