相关疑难解决方法(0)

字符串格式化中的命名占位符

在Python中,当格式化字符串时,我可以按名称而不是按位置填充占位符,如下所示:

print "There's an incorrect value '%(value)s' in column # %(column)d" % \
  { 'value': x, 'column': y }
Run Code Online (Sandbox Code Playgroud)

我想知道这是否可以用Java(希望没有外部库)?

java string-formatting

153
推荐指数
10
解决办法
14万
查看次数

如何替换Java String中的一组标记?

我有以下模板字符串:"Hello [Name] Please find attached [Invoice Number] which is due on [Due Date]".

我还有名称,发票号和截止日期的字符串变量 - 用变量替换模板中的标记的最佳方法是什么?

(请注意,如果变量恰好包含令牌,则不应替换它).


编辑

感谢@laginimaineb和@ alan-moore,这是我的解决方案:

public static String replaceTokens(String text, 
                                   Map<String, String> replacements) {
    Pattern pattern = Pattern.compile("\\[(.+?)\\]");
    Matcher matcher = pattern.matcher(text);
    StringBuffer buffer = new StringBuffer();

    while (matcher.find()) {
        String replacement = replacements.get(matcher.group(1));
        if (replacement != null) {
            // matcher.appendReplacement(buffer, replacement);
            // see comment 
            matcher.appendReplacement(buffer, "");
            buffer.append(replacement);
        }
    }
    matcher.appendTail(buffer);
    return buffer.toString();
}
Run Code Online (Sandbox Code Playgroud)

java regex templates

106
推荐指数
9
解决办法
13万
查看次数

标签 统计

java ×2

regex ×1

string-formatting ×1

templates ×1