gpt4 book ai didi

Java MessageFormat - 替换索引处的值

转载 作者:行者123 更新时间:2023-11-30 04:32:49 27 4
gpt4 key购买 nike

我有一个像这样的字符串:

{0}/suhdp run -command "suhilb" -input /sufiles/{1} -output /seismicdata/mr_files/{2}/ -cwproot {3}

需要首先替换第 0 个和第 3 个索引处的值。稍后,第一个和第二个索引将被替换(在已经部分格式化的字符串上)并最终使用。

我玩了一下 ChoiceFormat但无法使用 MessageFormat 对其进行管道传输类来实现我想要的。

欢迎大家指点!

最佳答案

由于您不会一次填充所有值,我建议您使用构建器:

public class MessageBuilder
{
private final String fmt;
private final Object[] args;

public MessageBuilder(final String fmt, final int nrArgs)
{
this.fmt = fmt;
args = new Object[nrArgs];
}

public MessageBuilder addArgument(final Object arg, final int index)
{
if (index < 0 || index >= args.length)
throw new IllegalArgumentException("illegal index " + index);
args[index] = arg;
return this;
}

public String build()
{
return MessageFormat.format(fmt, args);
}
}

这样你就可以做到:

final MessageBuilder msgBuilder = new MessageBuilder("{0}/suhdp run -command \"suhilb\" -input /sufiles/{1} -output /seismicdata/mr_files/{2}/ -cwproot {3}", 4)
.addArgument(arg0, 0).addArgument(arg3, 3);

// later on:
msgBuilder.addArgument(arg1, 1).addArgument(arg2, 2);
// print result
System.out.println(msgBuilder.build());

这段代码可能缺乏一些错误检查等,它远非最佳,但你明白了。

关于Java MessageFormat - 替换索引处的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14237741/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com