You need to read the "Mathematica book" (help, but i like version 4.0 since it's formatted as a book not a disconnected set of tutorials that are now scattered). you need to understand functions that do not Hold[] arguments are Evaluated by kernel BEFORE the function sees them, and After as well, and at each step some function does that the kernel handles for the function (say, of Plus is used, the kernel must evaluate it).
But also that Mathematica keeps things in List[]. giving a function a List is better, but often you may give a function one argument at a time and store the results as List (and not all functions support List, either)
The person above instructed you (backwardsly) to do one argument at a time, which Mathematica accumulates as a List[] just as if Map[StringPosition, {...}] were used.
There are firm reasons why why things are "well ordered" by default. Consider trying to find parts of an equation: if the equation is not well ordered you cannot find it's parts since you cannot say where they might be in a jumble "stuff array". oppositely every part of an expression in Mathematica is perfectly ordered. You can find the term multiple factor exponent (etc) by level, by part, case, and etc. only if they have order.
ie: Level[expr,levelspec], gives a list of all subexpressions of expr on levels specified by levelspec.
ie: FactorList[poly], gives a list of the factors of a polynomial, together with their exponents.
These basic necessities of doing mathematics all operate on the principle of ordering. (also, searching for things requires perfect ordering for efficiency, a computer science tip)
MEANWHILE. You can ask for a string position and store the result as {input,output} or f[input]:=output. you can then use Case or make a function which tells you (note it uses binary search, see above) which of your input got what output. or just have input[i] and output[i] and use i to crossreference
I did say check Options[StringPosition] didn't I ?
We don't know for sure if StringPosition is the "culprit". But it may be. It may be for "efficiency of massively large searches" it was done intently (the unwanted ordering). That I can't tell you.