3

I have a need to show the boolean value as string and I'm trying to convert boolean to string but its not coming along, here is what I have done so far:

try to convert using String.valueOf but does not work.

tried this:

boolean b = true;
system.debug('boolean to string: ' + string.valueOf(b));

I'm getting the following:

USER_DEBUG [1]|DEBUG|boolean to string: true

But I want that to be in string like this 'true'

I have also tried to concatenate by using single quote

<apex:variable var="sr" value="{!string.valueOf('"' + record.status + '"')}"/>

then got this error:

Error Error: value="{!string.valueOf('"' + record.status + '"')}" EL Expression Unbalanced: ... {!string.valueOf('"' + record.status + '"')} Error Error: EL Expression Unbalanced: ... {!string.valueOf('"' + record.status + '"')}

  • 1
    String.valueOf(b) is a string. – sfdcfox Jun 24 '16 at 19:59
  • System.assert( ((Object)(String.valueOf(b)) instanceOf String ); – sfdcfox Jun 24 '16 at 20:00
  • Take a look at this stackoverflow.com/questions/18833054/… OR what @sebastin kessel mentioned! – d_k Jun 24 '16 at 20:07
  • You may want to simply explain what the problem is, not try to find a solution to a problem that might not even solve your problem. This is what we've come to call an x-y problem. – sfdcfox Jun 24 '16 at 23:55
4

If you really want to format it differently than what you get out of String.valueOf, it is probably worth creating a method for it.

public static String wrapSingleQuotes(Boolean input)
{
    return (input == null) ? '' : '\'' + String.valueOf(input) + '\'';
}

Then you can do:

system.debug('boolean to string: ' + wrapSingleQuotes(b));

Same strategy would apply for parens, double quotes, etc.

In VF, you can simply use outputText:

<apex:outputText value="{!'\'' & myBoolean & '\''}" />
| improve this answer | |
  • 1+ is there a way to do it on VFP instead of creating an apex method? – Nick Kahn Jun 24 '16 at 23:10
6

How about

Boolean theBool = true;

String theString = (theBool) ? 'true' : 'false';

It's more verbose but it works.

PS: in the Debug Log you will not see strings in quotes, are you sure that the String.ValueOf method you called before is not already returning a string?

| improve this answer | |
  • 2
    FWIW, your solution forgot about one of the three Boolean states: null. Personally, I'd just use the following: String theString = ''+theBool; This is the same as String.valueOf(theBool), won't crash on nulls, and is shorter than other solutions. – sfdcfox Jun 24 '16 at 21:40
  • I wouldn't have used my own solution, tbh... I am still a bit surprised the OP says string.ValueOf() didn't work for him. I suspect he either wanted single quotes (which won't automatically be added) or erroneously expected them. – Sebastian Kessel Jun 24 '16 at 21:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.