Как скопировать элементы из массива ОТ и ДО?
Допустим есть массив {'1','2','3','4','5'}
Нужно вырезать с 1 элемента по 3 элемент например (при этом элемент с этим номером не включится в вырезанную часть).
В общем нужен аналог метода slice из JavaScript .
Решение:
char[] arr = {'1','2','3','4','5'};
string result = new string(arr);
result.Substring(1, 3);
Ответы (1 шт):
В C# есть несколько возможностей получить подмассив из массива:
С помощью встроенного языка запросов LINQ:
var subArray = arr.Skip(1).Take(3).ToArray();С промежуточным использованием списков:
var subArray = new List<char>(arr).GetRange(1, 3).ToArray();Начиная с C# 8.0 вы можете использовать Индексы и диапазоны:
var subArray = arr[1..4];Воспользоваться методом Array.Copy():
var subArray = new char[3]; Array.Copy(arr, 1, subArray, 0, 3);
Если в вашем коде получение подмассивов – частая операция, можете реализовать свой универсальный метод расширения, например так:
public static class ArrayExtensions
{
public static T[] SubArray<T>(this T[] source, int index, int length)
{
T[] result = new T[length];
Array.Copy(source, index, result, 0, length);
return result;
}
}
И затем использовать в коде так (причем работать будет с массивом любых типов за счет применения обобщений):
var subArray = arr.SubArray(1, 3);
// массив чисел:
var intArray = new int[] { 0, 5, 10, 15, 20 };
intArray.SubArray(2, 2); // { 10, 15 }
// массив произвольных классов:
var myClassArray = new MyClass[10];
myClassArray.SubArray(6, 3);