【问题标题】:c# Substring Equivalent of array [duplicate]c#数组的子字符串等价物[重复]
【发布时间】:2017-12-28 19:05:34
【问题描述】:

数组有等价的子字符串吗?

输入new char[] foo = {'a', 'b', 'c', 'd', 'e', 'f'}

如果这是一个字符串 abcdef 我会使用 .Substring(0, 2) 并得到 ab

如果输入索引是0, 2,是否有内置方法可以给我char[] {'a', 'b'}

代码示例

char[] foo = {'a', 'b', 'c', 'd', 'e', 'f'};
char[] bar = foo.**Method**(0, 2); //what can I do here?

Console.WriteLine(bar);
//Output would be` **ab**

我知道我可以将 Char 数组转换回字符串,使用 Substring 再转换回 Char 数组。但这需要一些额外的代码行,我想知道,如果只有 1 个内置方法是可能的。

【问题讨论】:

  • 有一个ArraySegment 类你可以使用。

标签: c# arrays string substring equivalent


【解决方案1】:

没有一种方法可以做到这一点,但您可以使用 Linq 获得相同的效果

var newArr = set.Skip(n).Take(k).ToArray();

进一步的步骤可能是编写扩展方法

public static class MyExtensions
{
    public static T[] Subsequence<T>(this IEnumerable<T> arr,int startIndex, int length)
    {
        return arr.Skip(startIndex).Take(length).ToArray();
    }
}

并将其用作

var newset = new[] { 1, 2, 3, 4, 5 }.Subsequence(1, 2);

【讨论】:

  • 另请看ArraySegment&lt;T&gt;
  • 如何在特定索引上结束段?这看起来你只能从指定的索引获取数组到数组的末尾
猜你喜欢
  • 1970-01-01
  • 2017-04-06
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-27
  • 1970-01-01
  • 2012-05-17
相关资源
最近更新 更多