Different approaches:
cards = {'5H' '5C' '6S' '7S' '10D' 'QC' '3S' 'KS' '7S' '10D'}
ranks1 = cellfun(@(c) c(1:end-1), cards, 'uniform', 0)
suits1 = cellfun(@(c) c(end), cards, 'uniform', 0)
ranks2 = regexprep(cards, '.$', '', 'once')
suits2 = regexp(cards, '.$', 'match', 'once')
ranks3 = extractBefore(cards, lettersPattern(1) + lineBoundary)
suits3 = extract(cards, lettersPattern(1) + lineBoundary)
ranks4 = extract(cards, asManyOfPattern(characterListPattern("A1234567890JQK"),1))
suits4 = extract(cards, characterListPattern("CDHS"))
ranks5 = regexp(cards, '[0-9AJQK]+', 'match', 'once')
suits5 = regexp(cards, '[CDHS]', 'match', 'once')