isnt every language that takes string homoiconic? because code is string and , string is also valid data type in that language? (by wikipedia definition)
Sort of, but only in a trivial and uninteresting sense - similar to how f(x) = 0 is its own derivative, but is much less interesting in that sense than f(x) = e^x.
A string has no additional structure, so if you want to do any transformations beyond simple string/regex substitutions you have to parse it into a more suitable format.