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

发布于 2022-09-12 00:43:02 字数 470 浏览 16 评论 0

以下代码所示,就是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
}

`

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

破晓 2022-09-19 00:43:02

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);  
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文