如何在java实现js中replace函数第二个参数为匿名函数(替换每个匹配结果为此函数返回值)的特性?

RUSSIAVK
  • 26

以下代码所示,就是js中replace函数第二个参数可以为匿名函数,
并能够在遍历每个匹配的字符时将其作为参数t传入这个匿名函数内。
而在java中,第二个参数只能为固定值。
那么在java中能实现这种特性吗?

`

function k() {

    var r = new Date().getTime();
    var q = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(t) {
        var s = (r + Math.random() * 16) % 16 | 0;
        r = Math.floor(r / 16);
        return (t == "x" ? s : (s & 7 | 8)).toString(16)
    });
    return q
}

`

评论
阅读 1.1k
2 个回答

java8中有函数式编程,可以实现类似的
首先要创建接口

@FunctionalInterface  
public interface MyFun {  
    String myReplace(String string);
}

方法

private String replace(String param, String reg, MyFun myFun) {  
    return myFun.myReplace(param);  
}

调用 我用的使测试类

@Test  
public void test(){  
  Long r = new Date().getTime();  
  String param = "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx";  
  String q = replace(param, "reg", t -> {  
    // 你要替换为的算法  
    return param.replaceAll("yx", "@@@@");  
  });  
  System.out.println(q);  
}
撰写回答

登录后参与交流、获取后续更新提醒

宣传栏