Give a try to this:
Str='this string has "a substring"'
eval Tmp=( "${Str}" )
printf "%s\n" "${Str}"
this string has "a substring"
printf "%s\n" "${Tmp[3]}"
a substring
set | grep "^Tmp"
Tmp=([0]="this" [1]="string" [2]="has" [3]="a substring")
I have to warn you regarding eval, see the comment from @charlesduffy: use it only if Str is generated earlier with your own lines of code.