The point of having as assertion is deviated if you desire to eat the exception on failed Assertion. What you are looking for can be achieved easily by an if/else block as mentioned in the question header.
Just for the sake of verbosity you can add a message to the assertion in either of the below ways, but you would still get an exception on failure:
assert string[0] == '2' : 'Not Equal'
// or
assert string[0] == '2', 'Not Equal'
should give a message as
java.lang.AssertionError: Not Equal. Expression: (string[0] == 2).
Values: string = 1 2 3