4
|
Michael Teper Ryan Lee · 技术社区 · 14 年前 |
![]() |
1
3
因为似乎没有人给出满意的答案,所以我想出了一个。下面是一个基于字符串的解决方案(.Net 4):
但是,这只是从序列中删除重复元素的一般情况,因此下面是通用版本:
当然,这实际上只是从输入流中删除所有连续重复项的函数的更具体版本:
显然你可以用第二个函数来实现第一个函数:
顺便说一句,我将上一个函数与regex版本进行了基准测试(
我还尝试了“理想的”程序解决方案:
|
![]() |
2
15
这不是linq类型的任务,请使用regex
当然,可以使用linq将其应用于字符串集合。 |
![]() |
3
7
|
![]() |
4
2
在实践中,我可能只会使用您的原始解决方案或正则表达式(如果您需要快速简单的解决方案)。一种使用lambda函数的古怪方法是定义一个定点运算符:
这一直在呼唤行动
|
![]() |
5
0
根据定义,Linq与可枚举(即集合、列表、数组)相关。您可以将字符串转换为一个char集合,并选择非空格的一个,但这肯定不是Linq的工作。 |
![]() |
6
0
如果您也希望将制表符视为空白,请使用:
更新 : 双方都提出了在满足“使用LINQ”要求的同时解决这个问题的最合理的方法 Hasan 和 Ani . 但是,请注意,这些解决方案涉及通过索引访问字符串中的字符。 LINQ方法的精神是它可以应用于任何可枚举序列。因为这个问题的任何合理有效的解决方案都需要维护某种状态(使用Ani和Hasan的解决方案,很容易忽略这个事实,因为状态已经在字符串本身中维护了),接受任何项目序列的通用方法很可能更易于使用过程代码实现。 抽象的 变成一种方法 当然,就像LINQ风格的方法。但我不建议一开始就抱着“我想在这个解决方案中使用LINQ”的态度来解决这样的问题,因为这会给代码带来非常尴尬的限制。 值得一提的是,以下是我如何实现这个总体想法。
|
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 4 月前 |
![]() |
Pavel Foltyn · 如何在C中生成逆字典# 5 月前 |
![]() |
ewok · 基于种子和上一个值创建值列表 9 月前 |
|
Vasu V · 将foreach转换为select语句 10 月前 |
![]() |
Amber Cahill · LINQ Any()会在没有参数的情况下枚举吗? 10 月前 |
![]() |
Modest · 使用命名空间和文本值序列化xElement 1 年前 |