He's 23?
he's old enough to move out. if he was mine, he'd get another chance once and for all to get to the bottom of why he's stealing (because people don't generally steal just for the sheer hell of it) and seek help to sort out the cause. if he refused, and/or if the behaviour didn't stop then he'd be out - with a restraining order if necessary. If he landed on the streets, that's a consequence of his behaviour that he has to deal with. Tough love!
He needs to be given a boundary and if he crosses that boundary then he must pay the consequences - immediately - because people will get away with as much as they want for as long as they can, it's our nature!
Being 'harsh' with him doesn't mean you stop loving him though. He is old enough to be responsible for his own actions now so don't make excuses for him! Sometimes you really do have to be 'cruel' to be kind.