c# - 如何将字符串拆分为包含前一个最后一个字符的两个字符的字符串数组?

我有这个词,我想将它拆分成数组,并在 split 的每次迭代中取最后一个前一个字符。

string word = "HelloWorld!";
string[] mystringarray = word.Select(x => new string(x, 2)).ToArray();
Console.WriteLine(mystringarray);

输出结果:

[HH,ee,ll,oo,WW,oo,rr,ll,dd,!!]

预期结果:

[He,el,ll,lo,ow,wo,or,rl,ld]

我怎样才能做到这一点?

最佳答案

如果你想要一个 LINQ 解决方案,你可以使用 Zip :

string[] mystringarray = word
    .Zip(word.Skip(1), (a, b) => $"{a}{b}")
    .ToArray();

这会将 word 中的每个字符与自身压缩在一起,使用 Skip 作为偏移量,并且仍然具有 O(n) 复杂度显式循环。

https://stackoverflow.com/questions/70594619/

相关文章:

c++ - std::unordered_map 如何确定哈希表中特定键的位置?

websocket - 将 Nextjs 部署到 Vercel 的 SocketIO,套接字未连接

c++ - 自动占位符类型和显式模板类型在 C++20 中是否等效?

r - 如何通过合并 csv 文件创建数据框,然后基于它创建 Shiny 的应用程序?

c++ - 这个 'for' 循环与键盘记录器有什么关系?

c - 如何跟踪全局变量重新定义问题的链接器问题

r - 有没有一种方法可以将列添加到函数形式的数据框中

python - 小列表的长排列

kotlin - 为什么 Kotlin 不提示歧义?为什么要调用辅助构造函数?

r - 如何将多列连接成一列并删除重复项?