Вы должны использовать RegEx:
Regex r = new RegEx("[0-9]+\.[0-9]+");
Match m = r.Match(myString);
Нечто подобное. Тогда вы можете просто использовать:
float f = float.Parse(m.value);
Если вам нужен массив:
MatchCollection mc = r.Matches(myString);
string[] myArray = new string[mc.Count];
mc.CopyTo(myArray, 0);
EDIT
Я только что создал небольшое приложение для вас, Джо. Я скомпилировал его, и он отлично работал на моей машине, используя строку ввода из вашего вопроса. Если у вас возникли проблемы, опубликуйте вашу InputString, чтобы я мог попробовать это с этим. Вот код, который я написал:
static void Main(string[] args)
{
const string InputString = "Item X $4.50 Description of item \r\n\r\n Item Z $4.75";
var r = new Regex(@"[0-9]+\.[0-9]+");
var mc = r.Matches(InputString);
var matches = new Match[mc.Count];
mc.CopyTo(matches, 0);
var myFloats = new float[matches.Length];
var ndx = 0;
foreach (Match m in matches)
{
myFloats[ndx] = float.Parse(m.Value);
ndx++;
}
foreach (float f in myFloats)
Console.WriteLine(f.ToString());
// myFloats should now have all your floating point values
}