The man, 26, was attacked in Elm Grove Road, Dawlish, just after 5.30pm on Saturday.
He was taken to Torbay Hospital, where he had an emergency operation, but his injuries are not thought to be life-threatening.
Police say a man was arrested in a Dawlish pub in connection with the attack four hours later.
A 38-year-old man from Exeter has been charged with wounding, criminal damage, aggravated burglary and failing to supply a sample after being arrested and was due to appear in court in Torbay this morning.