Dustin Burwood was arrested on Saturday and charged with sexual assault causing bodily harm.
The incident occurred around 3 a.m. PT on Jan. 31, when a 25-year-old woman was waiting for a bus on the 600 block of Smithe Street.
She was allegedly grabbed by the suspect, who carried her into an alleyway and sexually assaulted her. The woman fought back and a passerby intervened, causing the attacker to flee.
The woman was taken to hospital by paramedics, where she was treated for injuries to her face, back and leg.
"This was a very traumatic situation, but she managed to do what was necessary to protect herself," said Det. Const. Lorena Anderson of the Vancouver police sex crimes unit.
Burwood is scheduled to appear in court on Thursday.