Столкнулся с типичной задачей в процессе загрузки-выгрузки данных. Условия задачи следующие:
На входе строка float значений: 1.45254, 12.07406, 16.1777, 31.12399 и т.д.
Необходимо: получить массив значений типа float.
Чтобы не городить огород циклов каждый раз, сделал решение в .NET-стиле. Кому надо – пользуйтесь невозбранно :)
using System;
using System.Globalization;
namespace MyApplication
{
static class StringExtension
{
public static T[] ToArray<T>(this string input, string separator, CultureInfo cultureInfo)
{
string[] stringList = input.Split(separator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
T[] list = new T[stringList.Length];
for (int i = 0; i < stringList.Length; i++)
list[i] = (T)Convert.ChangeType(stringList[i], typeof(T), cultureInfo);
return list;
}
public static T[] ToArray<T>(this string input, string separator)
{
return ToArray<T>(input, separator, CultureInfo.InvariantCulture);
}
}
}
using System.Globalization;
namespace MyApplication
{
static class StringExtension
{
public static T[] ToArray<T>(this string input, string separator, CultureInfo cultureInfo)
{
string[] stringList = input.Split(separator.ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
T[] list = new T[stringList.Length];
for (int i = 0; i < stringList.Length; i++)
list[i] = (T)Convert.ChangeType(stringList[i], typeof(T), cultureInfo);
return list;
}
public static T[] ToArray<T>(this string input, string separator)
{
return ToArray<T>(input, separator, CultureInfo.InvariantCulture);
}
}
}
Используется это, например, так:
float[] data = "1.1235 1345.1234 5857.1234 1491.1233456".ToArray<float>( "\r\n " );
