There are a number of ways to do what you are asking.
The easiest to learn is
$gettok(). To use your example, it would look something like this:
alias test1 {
tokenize 32 Today I went to the USA. It was awesome ..
var %i = 1
while ($gettok($1-, %i, 32)) {
if ($v1 == it) {
%yourtext = $v1 $gettok($1-, $+($calc(%i + 1), -, $calc(%i + 2)), 32)
break
}
inc %i
}
echo -a Text found: %yourtext
}
The twisty way, trying to do what you were doing is to use
$eval():
alias test2 {
tokenize 32 Today I went to the USA. It was awesome ..
var %i = 1
while ($eval($+($chr(36), %i), 2)) {
if ($v1 == it) {
%yourtext = $v1 $eval($+($chr(36), $calc(%i + 1)), 2) $eval($+($chr(36), $calc(%i + 2)), 2)
break
}
inc %i
}
echo -a Text found: %yourtext
}
This method can also be achieved using evaluation brackets (
[ and ]). I'd suggest avoiding them for the moment however. Most things they are used for can be done with $eval(), and the rest are probably out of your pay scale..

Moving right along.
Perhaps the best way to find string patterns like this is the powerful regular expressions. These can be complicated, but when used right, they are very powerful.
alias test3 {
tokenize 32 Today I went to the USA. It was awesome ..
if ($regex($1-, /(it \w+ \w+)/i)) {
%yourtext = $regml(1)
}
echo -a Text found: %yourtext
}
Now, these ideas are just the tip of the iceberg.
Give us a few more specifics, and we'll be happy to help you in any way we can.