java修改字符串的值_Java String:用多个值替换字符串

我目前正在构建一个配置文件,它将用多个变量替换给定的字符串,我很难解释它,所以也许最好向您展示我的意思:

以下方法将与String一起使用:Hello~欢迎来〜!

private static String REPLACE_CHAR = "~";

public static String parse(String key, String... inputs) {

int cache = matchCache.get(key, -1);

String value = customConfig.getString(key);

if (cache == -1) {

cache = StringUtils.countMatches(value, REPLACE_CHAR);

matchCache.put(key, cache);

}

for (int i = 0; i < cache; i++) {

value = value.replaceFirst(REPLACE_CHAR, inputs[i]);

}

return value;

}

什么是用第一个输入替换〜的最快方法,然后移到第二个〜依此类推……

现在我没有使用别人代码的主要原因是:

理想情况下,我想创建一个不同的可替换字符的列表,这些字符将自动替换变量,所以在同一个代码中,我能够给它没有输入,但它会检查列表中的可替换字符并执行这样的方法作为getYourName()

每次都不需要检查此列表,因此仍可以编译模式?

我这样做是为了学习效率,在正则表达方面我缺乏能力!

最佳答案 如果您正在寻找效率,可以使用正则表达式实例化Matcher,然后使用find()方法查找实例,将每个匹配项的替换添加到StringBuffer中.

private Matcher matcher = Pattern.compile("([~])").matcher("");

public String parse(String key, String... inputs) {

String value = customConfig.getString(key);

matcher.reset(value);

StringBuffer sb = new StringBuffer();

int i = 0;

while (matcher.find()) {

String text = matcher.group(1);

matcher.appendReplacement(sb, inputs[i++]);

}

matcher.appendTail(sb);

return sb.toString();

}

System.out.println(parse("foo", "T F C", "James Bond"));

// prints "Hello T F C, my name is James Bond"

// if customConfig.getString("foo") returns "Hello ~, my name is ~"

这样,您可以避免在String.replaceFirst中涉及的每个循环期间从字符串的开头发现.但是如果要验证input []的长度是否等于它,你仍然可以缓存〜找到的数量.

上面的示例忽略了输入[]中存储了正确数量的条目这一事实.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值