草庐IT

lambda表达式

全部标签

c# - 正则表达式删除特定的重复字符

我想在C#中创建一个正则表达式,如果某个特定字符重复并使其不是字符串的最后一个字符,它会删除它。例子:"a--b-c-"=>"a-b-c""-a-b--c"=>"a-b-c""--a--b--c--"=>"a-b-c"我从不希望-重复,我从不希望它成为我的字符串的第一个或最后一个字符。我如何编写正则表达式来执行此操作? 最佳答案 分两步执行此操作可能最简单。首先用单个“-”替换每个出现的一个或多个“-”,然后删除任何前导/尾随“-”。varreducedString=Regex.Replace(inputString,"-+","-

c# - lambda 表达式和匿名方法之间的区别 - C#

这个问题在这里已经有了答案:delegatekeywordvs.lambdanotation(6个答案)关闭9年前。重复:delegatekeywordvs.lambdanotation我了解匿名方法可用于定义委托(delegate)和编写内联函数。使用Lambda表达式与此有什么不同吗?我想我对何时使用什么有点困惑。编辑:此外,似乎要使用匿名或lambda,该类型是否需要扩展方法?

c# - 用C#中的正则表达式替换连接字符串中的密码

我试图在C#中创建一个正则表达式来替换连接字符串的密码,这样当我在页面上显示它时它就不会显示。连接字符串密码在字符串中的某处,如PWD=password;到目前为止我有:Regex.Replace(connStr,"PWD=.*;","PWD=********");这可以找到模式的开头,但问题是通配符(.*)也包括;所以模式永远不会终止,字符串的其余部分也会被替换。我怎么能说一切,但一个;在我的正则表达式中?谢谢。 最佳答案 您不需要为此使用RegEx-.NET具有内置的SqlConnectionStringBuilder您可以使用

c# - 改进/修复 C 样式 block 注释的正则表达式

我正在(用C#)编写一个简单的解析器来处理一种看起来很像经典C的脚本语言。在我的一个脚本文件中,我用来识别/*block注释*/的正则表达式进入了某种无限循环,占用了100%的CPU多年。我使用的正则表达式是这样的:/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*+/关于为什么这可能被锁定有什么建议吗?或者,我可以改用什么正则表达式?更多信息:使用面向.NET3.5的C#3.0;我正在使用Regex.Match(string,int)方法在字符串的特定索引处开始匹配;我已经让程序运行了一个多小时,但比赛还没有完成;传递给Regex构造函数的选项是Regex

c# - 用于有条件地获取列表项索引的 Lambda 表达式

我有一个List.我需要获取项目值=true的前n个项目的索引。例如下面的列表项(bool)10011001000TopTrueIndexes(3)=Thefirst3indexeswherebitsaretrueare0,3,4TopTrueIndexes(4)=Thefirst4indexeswherebitsaretrueare0,3,4,7我如何为此编写lambda? 最佳答案 好吧,假设你有一些容易识别的条件,你可以做这样的事情,这将适用于任何IEnumerable:varquery=source.Select((valu

c# - 这个表达有什么问题?无法将类型 'int' 隐式转换为 'byte'

我收到错误“无法将类型‘int’隐式转换为‘byte’。存在显式转换(是否缺少强制转换?)”。byte+byte=byte不是吗?我还注意到当我删除+rgb.Green时它起作用了//rgb.Red,rgb.Green,rgb.Bluearebytetypes//h,deltaaredoublergb.Red=Convert.ToByte(Math.Round((h-4)*delta))+rgb.Green;publicstructRGBColor{publicbyteRed{get;set;}publicbyteGreen{get;set;}publicbyteBlue{get;se

c# - 使用正则表达式比使用 IndexOf 更快吗?

我有一个正在运行的应用程序,它查看队列中的项目,然后根据某些关键字应用一个类别-然后将其插入数据库。我正在使用IndexOf来确定某个关键字是否存在。这是理想的方式还是RegEX会更快?每秒大约处理10个项目。 最佳答案 对于仅查找关键字,IndexOf方法比使用正则表达式更快。正则表达式很强大,但它们的力量在于灵active,而不是原始速度。它们在简单的字符串操作中没有击败字符串方法。无论如何,如果字符串不是很大,那应该没什么关系,因为您不会经常这样做。 关于c#-使用正则表达式比使用

c# - 在通用列表的 ForEach() 的 lambda 表达式中使用条件运算符?

在ForEach的lambda表达式中不允许有条件运算符吗?Listitems=newList{"Item1","Item2","ItemICareAbout"};stringwhatICareAbout="";//doesn'tcompile:(items.ForEach(item=>item.Contains("ICareAbout")?whatICareAbout+=item+",":whatICareAbout+="");编译错误->“只有assignment、call、increment、decrement、new对象表达式才能作为语句使用”尝试使用正常的if也不起作用://

没有变量/参数声明的 C# lambda 表达式?

当一个方法以lambda表达式为参数时,它调用了什么,比如Enumerable.Where,是在没有实际声明表达式中的变量或方法参数的情况下被调用的?例如,我熟悉这个lambda表达式语法:publicstringGetDigits(stringinput){returnnewString(input.Where(i=>Char.IsDigit(i)).ToArray());}然而,令我惊讶的是findout这也可以写成:publicstringGetDigits(stringinput){returnnewString(input.Where(Char.IsDigit).ToArra

c# - 使用 lambda 从数组中选择每隔一个元素

这个问题在这里已经有了答案:HowcanIgeteverynthitemfromaList?(10个答案)关闭8年前。C#4.0。如何使用lambda表达式完成以下操作?int[]a=newint[8]{0,1,2,3,4,5,6,7};//Nowfetcheverysecondelementsothatweget{0,2,4,6}