string data = "0000062456"
как разделить эту строку на 5 штук, так что у меня есть:строка расщепление в зависимости от количества полукокса
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
string data = "0000062456"
как разделить эту строку на 5 штук, так что у меня есть:строка расщепление в зависимости от количества полукокса
part[0] = "00";
part[1] = "00";
part[2] = "06";
part[3] = "24";
part[4] = "56";
Использование Substring(int32, int32)
:
part[0] = myString.Substring(0,2);
part[1] = myString.Substring(2,2);
part[2] = myString.Substring(4,2);
part[3] = myString.Substring(6,2);
part[4] = myString.Substring(8,2);
Это, конечно, может быть легко преобразован в функцию, используя индекс, для которого требуется подстрока:
string getFromIndex(int arrIndex, int length)
{
return myString.Substring(arrIndex * 2, length);
}
Если вы действительно хотите получить фантазию, вы также можете создать метод расширения.
public static string getFromIndex(this string str, int arrIndex, int length)
{
return str.Substring(arrIndex * 2, length);
}
Edit: Неправильный язык
string str = "0000062456";
List<string> parts = new List<string>();
for (Int32 i = 0; i <= (str.Length/2 - 1); i++)
{
parts.Add(str.Substring(i * 2, 2));
}
В случае, если вы заинтересованы в решении LINQ:
IEnumerable<string> result = Enumerable
.Range(0, s.Length/2)
.Select(i => s.Substring(i * 2, 2));
Где вы можете заменить 2
любой номер, который вы хотели бы.
Помните, что это будет работать только со строками, которые точно делятся на длину подстроки (2 символа в примере). В моем случае мне нужно было также захватить последнюю подстроку, которая была короче остальных. Изменение легко, но без него у вас будет меньше строк, чем вы могли бы захотеть. –
Это, вероятно, немного перебор для строки, так как Substring
достаточно удобен, но общий вопрос заключается в том, как разбить коллекцию на подгруппы заданного размера. У библиотеки MoreLinq
есть такая функция: Batch
.
Он может также принять лямбда-выражение в качестве второго параметра для преобразования подгруппы непосредственно, поэтому решение может быть:
IEnumerable<string> parts = str.Batch(2, String.Concat);
Вышеуказанные работы для .Net 4.0. На 3,5 Concat нужен массив, поэтому мы можем использовать ToArray
или:
IEnumerable<string> parts = str.Batch(2, chars => new String(chars.ToArray()));
Приятный побочный эффект этого подхода заключается в том, что она защищает вас от края корпуса - он будет работать, как и ожидалось, даже длина вашей строки Безразлично» t равномерно делятся по длине на подстроках.
Не помещайте метки в заголовки (C#). Кроме того, у C# нет возможности разделить строки - это .NET Framework имеет класс 'System.String'. Вот почему я добавил .NET к вашим тегам. –