草庐IT

lambda表达式

全部标签

java - 通过 lambda 表达式调用 System.out.println()

在C#中,我可以编写以下代码:publicstaticActionWL=x=>Console.WriteLine(x);...然后每次我想向控制台写一些东西时,我只需调用:WL("Someoutput");使用Java8lambda表达式的等效代码是什么?我尝试了以下但它不起作用:staticvoidWL=(Strings)->{System.out.println(s);} 最佳答案 您当前的尝试没有成功,因为您正在尝试声明一个void类型的变量-等效项在C#中也会失败。您需要声明一个合适的功能接口(interface)的变量,就

java - 为什么这个正则表达式在 Java 中不能像预期的那样工作?

简单的正则表达式问题(答案很可能是特定于Java的):"#Thisisacommentinafile".matches("^#")这会返回错误。据我所知,^表示它始终表示的意思,#没有特殊含义,所以我将^#翻译为“字符串开头的‘#’”。哪个应该匹配。在Perl中也是如此:perl-e"print'#Thisisacomment'=~/^#/;"打印“1”。所以我很确定答案是特定于Java的。有没有人能赐教一下?谢谢。 最佳答案 Matcher.matches()检查整个输入字符串是否与正则表达式匹配。由于您的正则表达式仅匹配第一个字

java - 正则表达式 - 捕获所有重复组

我有如下字符串:@property.one@sometexthere@property.two@anotheroptionaltexthereetc其中包含@.+?@字符串。我想通过一个正则表达式匹配将所有这些“变量”捕获到组中,但似乎不可能,因为正则表达式在重复时仅返回最后捕获的组。 最佳答案 你是对的;大多数正则表达式风格,包括Java,都不允许访问重复捕获组的单个匹配项。(为了记录,Perl6和.NET确实允许这样做,但这对您没有帮助)。你还能做什么?Patternregex=Pattern.compile("@[^@]+@"

java - 正则表达式删除空格

如何在Java中编写正则表达式来删除空格?例如Input:""Output:""---------------------Input:""Output:""请注意,不应删除制表符和换行符。仅应删除空格。编辑:我们如何进行支票?例如,如何在if语句中检查字符串只包含空格(任意数量)if(){//insidestatement}为了input=""orinput=""控件应该放在if语句中。 最佳答案 以下将执行此操作:str=str.replaceAll("","");或者:str=str.replaceAll("+","");在我的

java - 表达式包含 "at most one side effect, as its outermost operation"是什么意思?

在JavaLanguageSpex15.7:Codeisusuallyclearerwheneachexpressioncontainsatmostonesideeffect,asitsoutermostoperation这是什么意思? 最佳答案 这意味着每个表达式应该一次完成一个任务。考虑以下两个声明:inta=10;intb=20;现在的任务是将这两个int相加并将b递增1。有两种方法可以做到。intc=a+b++;和intc=a+b;b++;JLS更喜欢并推荐后者。 关于java-

java - 正则表达式替换字符串中的所有\n,但不替换 [code] [/code] 标记中的那些

我需要帮助替换字符串中的所有\n(新行)字符,但不是[code][/code]标签内的那些\n。我的脑子在燃烧,我无法自己解决这个问题:(例子:testtesttesttesttesttesttesttest[code]sometestcode[/code]moretext应该是:testtesttesttesttesttesttesttest[code]sometestcode[/code]moretext感谢您的宝贵时间。最好的问候。 最佳答案 我建议使用(简单的)解析器,而不是正则表达式。像这样的东西(糟糕的伪代码):stac

java - 比较表达式语言中的字符串和 boolean 值

我有这种行为我不太明白${someVar}${someVar.class.name}${someVar=='error'}输出falsejava.lang.Booleantrue如何解决?为了首先测试两个“事物”是否具有相同的类型然后它们的值是否相同,编写测试的正确方法是什么? 最佳答案 这是在ELspecification中定义的语言行为:A{==,!=,eq,ne}BotherruleselidedIfAorBisBooleancoercebothAandBtoBoolean,applyoperatorCoerceAtoBool

java - 使用 Java 正则表达式删除字符串中的所有其他字符

我有这个家庭作业问题,我需要使用正则表达式来删除字符串中的所有其他字符。在一部分中,我必须删除索引1、3、5处的字符,...我已按如下方式完成此操作:Strings="1a2b3c4d5";System.out.println(s.replaceAll("(.).","$1"));这会打印出我想要的12345。基本上我一次匹配两个字符,并替换为第一个字符。我使用群组捕获来做到这一点。问题是,我在作业的第二部分遇到了问题,我需要删除索引0,2,4,...处的字符我做了以下事情:Strings="1a2b3c4d5";System.out.println(s.replaceAll(".(.

java - 如何忽略正则表达式中的转义字符?

我有以下正则表达式来匹配以“+”开头的文本中的所有单词。Pattern.compile("\\+[\\w-]+");这很好用,可以将"+Fooor+Bar"匹配到"+Foo"和"+Bar"。如何扩展正则表达式以忽略以转义的“+”字符开头的单词?"+Foo或+Bar但没有\\+Hello"应该匹配"+Foo"和"+Bar"但不是"+Hello"。(它应该适用于JDK1.7。)在此先感谢您的帮助! 最佳答案 你可以试试negativelookbehind:(?一般来说,(?匹配X前面没有Y.

java - 匹配转义字符(引号)的正则表达式

我想构建一个简单的正则表达式来覆盖带引号的字符串,包括其中的任何转义引号。例如,"Thisisvalid""Thisis\"also\"valid"显然,类似"([^"]*)"不起作用,因为它匹配第一个转义引号。什么是正确的版本?我想其他转义字符的答案是相同的(只需替换相应的字符)。顺便说一句,我知道“包罗万象”的正则表达式"(.*?)"但我尽可能避免使用它,因为毫不奇怪,它的运行速度比更具体的慢一些。 最佳答案 这是我过去用过的一个:("[^"\\]*(?:\\.[^"\\]*)*")这将捕获带引号的字符串以及任何转义的引号字符,