Investigators say 28-year-old Jermal Ponds also had a loaded handgun and a 12-inch bayonet when he was arrested Tuesday evening.
Police say a search also turned up about two dozen Percocet pills and more than an ounce of marijuana after a passenger getting off at City Hall told a transit officer she'd seen a man apparently carrying a gun.
Transit officers found Ponds on the last car of the northbound Broad Street Line train and discovered the items after he consented to a search.
Ponds is being held on $100,000 bail on drug and weapons charges. Court records don't list an attorney for him.