You can dowload the user written program -egenmore-, which provides several functions that fit your need.
e.g.
incss(strvarlist) , substr(substring) [ insensitive ] indicates occurrences of
substring within any of the variables in a list of string variables by 1 and
other observations by 0. insensitive makes comparison case-insensitive.
(Stata 6 required; an alternative is now just to use foreach.)
noccur(strvar) , string(substr) creates a variable containing the number of
occurrences of the string substr in string variable strvar. Note that
occurrences must be disjoint (non-overlapping): thus there are two
occurrences of "aa" within "aaaaa". (Stata 7 required.)
nss(strvar) , find(substr) [ insensitive ] returns the number of occurrences of
substr within the string variable strvar. insensitive makes counting
case-insensitive. (Stata 6 required.)