I'm a bit sad nobody thought to use `MapIndexed[]`:

    MapIndexed[With[{k = #2[[1]]}, If[Mod[k, 3] == 1, "string" <> ToString[k], #]] &,
               Range[9]]
       {"string1", 2, 3, "string4", 5, 6, "string7", 8, 9}