草庐IT

lambda表达式

全部标签

java - 替换 Java 正则表达式的第 1 组而不替换整个正则表达式

我有一个只有一组的正则表达式模式。我需要在输入字符串中找到符合模式的文本,并仅替换匹配组1。例如,我有正则表达式模式和要应用的字符串,如下所示。替换字符串是“”Patternp=Pattern.compile("\\w*(lan)\\w+");Matcherm=p.matcher("planplanslanderplanitia");预期的结果是planpsderpitia我尝试了以下方法Stringtest="planplanslanderplanitia";Patternp=Pattern.compile("\\w*(lan)\\w+");Matcherm=p.matcher(te

java正则表达式匹配文件路径

我正在尝试创建一个正则表达式来匹配java中的文件路径C:\abc\def\ghi\abc.txt我试过这个([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?,就像下面的代码一样importjava.util.regex.Pattern;publicclassRETester{publicstaticvoidmain(Stringarhs[]){StringregularExpression="([a-zA-Z]:)?(\\[a-zA-Z0-9_-]+)+\\?";Stringpath="D:\\directoryname\\testing\\abc.txt";Pat

java - 正则表达式找到一个 float

我以前从未使用过正则表达式,但这个java函数需要它(此处显示:HowtosetEdittextviewallowonlytwonumericvaluesandtwodecimalvalueslike##.##)我基本上只需要从文本框中获取一个float,应该很简单。我使用了一个工具,它说这应该有效:Stringre1="([+-]?\\d*\\.\\d+)(?![-+0-9\\.])";但它似乎不起作用,它不让我在文本框中输入任何内容。执行此操作的正确方法是什么?谢谢 最佳答案 试试这个:Stringre1="^([+-]?\\d

java - 正则表达式匹配java中的变量声明

我想解析一个变量声明语句并获取变量名。我正在做下面的事情Stringvar="privateStringipaddress;";我正在使用下面的正则表达式模式来匹配上面的字符串.*private\\s+([a-z]*)\\s+([a-z0-9_]*);它不起作用。它说找不到匹配项任何人都可以帮忙。 最佳答案 Firstofall,removethatdotfromthebeginningoftheregex,sinceitrequiresacharacterbeforetheprivateforamatch.Second,yourr

java - 如何在 Java 中使用正则表达式拆分后删除空结果?

我想从给定的字符串中找到所有数字(所有数字都与字母混合但用空格分隔)。我尝试拆分输入字符串但是当检查结果数组时我发现有很多空字符串,那么如何更改我的拆分正则表达式以删除此空格?Patternreg=Pattern.compile("\\D0*");String[]numbers=reg.split("asd0085sa2239349x");for(Strings:numbers){System.out.println(s);}结果:852239349我知道我可以遍历数组并删除空结果。但是如何只使用正则表达式呢? 最佳答案 如果您使用

Java 异常处理与正则表达式详解,实例演练及最佳实践

Java异常-Try...Catch在Java代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。当错误发生时,Java通常会停止并生成错误消息,这个过程称为抛出异常。try...catch语句try语句允许您定义一段代码块,并在其中测试是否发生错误。catch语句允许您定义一段代码块,当try块中发生错误时执行该代码块。try和catch关键字成对使用,语法如下:try{//要尝试的代码块}catch(Exceptione){//处理错误的代码块}示例:publicclassMain{publicstaticvoidmain(String[]args){

java - 为什么lambda表达式可以用作比较器?

OCPStudyGuide书中有一个关于比较器的示例,可以通过两种方式对其进行初始化。第一种是通过这样的匿名类:ComparatorbyWeight=newComparator(){publicintcompare(Duckd1,Duckd2){returnd1.getWeight()-d2.getWeight();}};这个我能理解。根据这本书,这可以用这样的lambda表达式代替:ComparatorbyWeight=(d1,d2)->d1.getWeight()-d2.getWeight();现在这个我不明白。lambda表达式不返回Comparator对象,我现在认为它不能返回

java - 正则表达式去除被视为字符串的前导零

我有这样的数字需要删除前导零。这是我需要的:00000004334300343->43343003430003030435243->3030435243由于我是正则表达式的新手,所以我无法弄明白。这不起作用:(^0) 最佳答案 你快到了。你只需要量词:str=str.replaceAll("^0+","");它替换1次或多次出现的0(这就是+量词的用途。类似地,我们有*量词,这意味着0或更多),在字符串的开头(由插入符号-^给出),带有空字符串。 关于java-正则表达式去除被视为字符串

java - 有什么方法可以从 Lambda 闭包中停止 Stream.generate 吗?

我刚开始玩Java8和Lambda表达式,我很好奇我是否可以通过返回特定值从Lambda表达式内部停止流生成(如空)。Stream.generate()是否可行?privateintcounter;privatevoidgenerate(){System.out.println(Stream.generate(()->{if(counter不幸的是,这段代码不会终止,所以通过简单地返回null不会跳出流。 最佳答案 Java9及更高版本包括thismethod:StreamtakeWhile(Predicatepredicate);

java - 带条件和赋值运算符的表达式

这个Javascript表达式在所有浏览器中都工作得很好(jsfiddle):false?1:x=2;它的计算结果为2。但是为什么?我希望这里有一个异常(exception),因为赋值的左侧是false?1:x,这不是有效的引用。与(jsfiddle)比较:(false?1:x)=2;这个正在抛出一个ReferenceError。我仔细检查了Javascriptoperatorprecedencetable,它声明条件运算符?:比赋值运算符=具有更高的优先级,因此两个表达式应该相同,至少我是这样。在Java中,它具有与Javascript非常相似的语法和运算符优先级规则,上面的两个表达