java string.replace 使用方法运行太慢

标签 java string format

我有一个以字符串作为参数的方法,该方法用方法中的字符串替换特定占位符:

public static String format(String in)
{
    in=in.replace("[time]",getTime()); //just some methods returning strings
    in=in.replace("[name]",getName());
}

我的问题是,即使字符串“[time]”没有出现在字符串中,每次调用 format(String) 时都会调用 getTime() 和 getName() 方法。由于我调用 format(String) 数百次,因此需要一分钟才能解析所有字符串。由于 getTime() 和 getName() 需要很长时间执行,并且子字符串“[time]”和“[name]”很少见,因此如果replace方法仅在出现子字符串“[time]”和“[name]”时调用 getTime() 或 getName() ,速度会快得多是一个占位符。我看到的最快的解决方案是重写 string.replace() 来替换(String)。现在我的两个问题是:

  1. 有更快的方法吗?
  2. 哪种编写replace(String)的方法最快?

最佳答案

如果在字符串中搜索所需的时间少于调用 getTime()getName() 的时间,则首先使用 contains

if (in.contains("[time]"))
{
    in=in.replace("[time]",getTime());
}

然后,您只需在需要时调用 getTime() 即可。与 getName() 相同。

或者,如果 getTime()getName() 始终返回相同的结果,则仅调用它们一次并存储其结果以供以后使用。

关于java string.replace 使用方法运行太慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15420490/

相关文章:

date - Google 数据洞察 - 格式化日期 YEAR MONTH (YYYYMM) 不起作用

java父级访问子级静态变量

python - 获取字符串中数值列表的最简洁方法

java - intellij 停止自动格式化使用大括号的 java 初始化代码周围的空白行

javascript - 使用 JavaScript 查找字符串中的空格数

java - 如何将整数格式化为四零左字符串?

java - 如何在java中获取给定的日期字符串格式(模式)?

java - 动态加载接口(interface)实现时如何使接口(interface)成为仅编译依赖项

java - com.google.inject 包可从多个模块访问

java - 使用 JPanel Java 自动调整 JFrame 的大小