Module bus.core

Class HighMultiReplacer

java.lang.Object
org.miaixz.bus.core.text.replacer.StringReplacer
org.miaixz.bus.core.text.replacer.HighMultiReplacer
All Implemented Interfaces:
Serializable, Function<CharSequence,CharSequence>, UnaryOperator<CharSequence>

public class HighMultiReplacer extends StringReplacer
高效替换器,通过查找指定关键字,替换对应的值 基于AC自动机算法实现,需要被替换的原字符串越大,替换的键值对越多,效率提升越明显 注意: 如果需要被替换的关键字出现交叉,最先匹配中的关键字会被替换 1、"abc","ab" 会优先替换"ab" 2、"abed","be" 会优先替换"abed" 3、"abc", "ciphers" 会优先替换"abc"
Since:
Java 17+
Author:
Kimi Liu
See Also:
  • Constructor Details

    • HighMultiReplacer

      public HighMultiReplacer(Map<String,Object> map)
      构造函数,初始化AC自动机。
      Parameters:
      map - 关键字映射,key为需要查找的字符串,value为替换值
  • Method Details

    • of

      public static HighMultiReplacer of(Map<String,Object> map)
      工厂方法,创建HighMultiReplacer实例。
      Parameters:
      map - 关键字映射,key为需要查找的字符串,value为替换值
      Returns:
      HighMultiReplacer实例
    • replace

      public int replace(CharSequence text, int pos, StringBuilder out)
      执行字符串替换,从指定位置开始,将结果追加到输出缓冲区。
      Specified by:
      replace in class StringReplacer
      Parameters:
      text - 待替换的字符串
      pos - 替换起始位置
      out - 输出缓冲区,存储替换结果
      Returns:
      替换后处理的字符数
    • apply

      public CharSequence apply(CharSequence text)
      应用替换规则,返回替换后的字符串。
      Specified by:
      apply in interface Function<CharSequence,CharSequence>
      Overrides:
      apply in class StringReplacer
      Parameters:
      text - 待替换的字符串
      Returns:
      替换后的字符串