Java是否等效于Python的printf哈希替换?

问题描述

| 具体来说,我正在将python脚本转换为java帮助器方法。这是一个代码段(为简单起见,对其进行了略微修改)。
# hash of values
vals = {}
vals[\'a\'] = \'a\'
vals[\'b\'] = \'b\'
vals[\'1\'] = 1

output = sys.stdout
file = open(filename).read()

print >>output,file % vals,
因此,在文件中有%(a),%(b),%(1)等,我想用哈希键替换。我仔细阅读了API,但找不到任何东西。我是否错过了它,或者Java API中不存在类似的东西?     

解决方法

我怀疑您会找到一个纯粹的Java解决方案,该解决方案可以开箱即用地完成您想做的事情。 考虑到这一点,最佳答案取决于文件中显示的Python格式字符串的复杂性和多样性: 如果它们很简单并且没有变化,那么最简单的方法可能就是自己编写一些代码。 如果相反,那么只需花费很少的工作即可获得所需结果的一种方法是将Jython嵌入到Java程序中。这将使您可以直接使用Python的字符串格式运算符(
%
)。此外,您将能够为其提供Java
Map
,就好像它是Python字典一样(在代码中为
vals
)。     ,如果没有其他模板库,您将无法直接执行此操作。我推荐StringTemplate。非常轻巧,易于使用,非常优化和强大。