Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/375.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java8中,用函数求值替换正则表达式的等价物是什么?_Java_Regex_Replace_Transformation_Java 8 - Fatal编程技术网

在Java8中,用函数求值替换正则表达式的等价物是什么?

在Java8中,用函数求值替换正则表达式的等价物是什么?,java,regex,replace,transformation,java-8,Java,Regex,Replace,Transformation,Java 8,我有一个这样的字符串“4+5=9;”,我想在找到的每个数字中添加一个 我想对每个匹配使用正则表达式和转换函数 我知道如何在Java String.valueOf(Long.parseLong(s)+1)中实现它; System.out.println(res);//5 + 6 = 10 您可以使用内置的流api来实现这一点 我们可以做到以下几点: String input = "4 + 5 = 9;"; String out = input.chars() .mapToObj(

我有一个这样的字符串
“4+5=9;”
,我想在找到的每个数字中添加一个

我想对每个匹配使用正则表达式和转换函数

我知道如何在Java String.valueOf(Long.parseLong(s)+1)中实现它; System.out.println(res);//5 + 6 = 10
您可以使用内置的
流api
来实现这一点

我们可以做到以下几点:

String input = "4 + 5 = 9;";

String out = input.chars()
        .mapToObj(i -> String.valueOf((char) i))
        .map(s -> s.matches("[0-9]") ? String.valueOf((Integer.parseInt(s) + 1)) : s)
        .collect(Collectors.joining());

System.out.println(out);    // prints 5 + 6 = 10;

在Java 8中似乎没有任何新的内容。看起来不错,认为这是正确的方法。这种方法只适用于没有上下文的1个字符(或分隔符)字符串。对
a+1=6
尝试同样的方法。无法理解您的意思,但
a+1=6
的结果是
a+2=7
String input = "4 + 5 = 9;";

String out = input.chars()
        .mapToObj(i -> String.valueOf((char) i))
        .map(s -> s.matches("[0-9]") ? String.valueOf((Integer.parseInt(s) + 1)) : s)
        .collect(Collectors.joining());

System.out.println(out);    // prints 5 + 6 = 10;