设为首页收藏本站订阅更新

无忧脚本

 找回密码
 加入无忧

QQ登录

只需一步,快速开始

搜索
查看: 1371|回复: 0

[原创] Java中也可以像javascript中这样str.replace( reg , function)

[复制链接]
发表于 2015-12-24 14:37:18 | 显示全部楼层 |阅读模式


  1. public class TextUtil {
  2.        

  3.         public static String repalce( String str , Pattern pattern , Function<String ,Matcher  > fun){
  4.                 Matcher matcher = pattern.matcher( str );
  5.                 String all = null ;
  6.                 StringBuffer sb =new StringBuffer();
  7.                 while( matcher.find()){
  8.                         all = matcher.group(0);
  9.                         String replace = (String)fun.apply( all , matcher );                       
  10.                         matcher.appendReplacement(sb, replace==null?"":replace );
  11.                 }
  12.                 matcher.appendTail(sb);
  13.                 return sb.toString();  
  14.         }
  15.         public static String repalce( String str , String pattern , Function<String ,Matcher  > fun){
  16.                  Pattern p  = Pattern.compile( pattern);
  17.                  return repalce( str , p ,fun);
  18.          
  19.         }

  20. }
复制代码

  1. public interface Function<T,K> {
  2.         public Object apply(T t,K k);
  3. }
复制代码


调用方法
  1. public class TextTest {
  2.         public static void main(String[] args) {
  3.                 String str = "abcdefg123hijk567";
  4.                  
  5.                 String result = TextUtil.repalce(str, "([a-z]+)(\\d+)", new Function<String, Matcher>() {
  6.                          
  7.                         @Override
  8.                         public Object apply(String matchedText, Matcher matcher) {
  9.                                
  10.                                 return matcher.group( 2 ) + matcher.group( 1 );
  11.                         }
  12.                 });
  13.                 System.out.println( result );
  14.         }
  15. }
复制代码
您需要登录后才可以回帖 登录 | 加入无忧

本版积分规则

小黑屋|手机版|Archiver|无忧脚本 ( 苏ICP备05080427号 )|值班电话:027-62300445   鄂公网安备 42011102000433号

GMT+8, 2017-11-25 09:44 , Processed in 0.093893 second(s), 9 queries , Gzip On, Memcache On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表