使用Java在HTML文件中填充占位符

问题描述


我有一个看起来像这样的HTML文件:


    

Hello! [NAME]%

我在Java文件中得到的是:

String name = "John";

我的问题是:

  1. 如何将John填入Java中的[Name]%?
  2. 这样做之后,如何在Java中将其转换为base64编码字符串?

谢谢您的帮助!

思路:


您正在使用Java正则表达式处理器喜欢讨价还价的许多字符。我认为如果您之前已经对Java进行过编程以进行文本处理,则可以使用String.replace(String,String);。方法将完成您尝试做的事情。

有三种String替换方法。但是,其中两个需要正则表达式。正则表达式希望您“转义”您键入的括号。

这里是从Oracle / Sun的Java文档复制的文本:java.lang.String

String    replace(CharSequence target, CharSequence replacement)

替换此字符串中与文字目标匹配的每个子字符串指定的文字替换序列的序列。

String    replaceAll(String regex, String replacement)

替换该字符串中与给定常规匹配的每个子字符串给定替换的表达式。

String    replaceFirst(String regex, String replacement)

替换此字符串中与给定匹配的第一个子字符串使用给定替换的正则表达式。

请注意,两个在参数列表中说“ regex”的人会期望regex字符串遵循此格式以进行模式匹配:

// Regular-Expression Programming with java.lang.String - Several "Escaped" Characters!
// ALSO NOTE: Back-slashes need to be twice-escaped!

String replacePattern = "\\[NAME\\]%";
yourText.replaceFirst(replacePattern, "John");

这些“来自地狱的反斜杠”是必需的,因为正则表达式处理器希望您转义'[‘和’]’,因为它们是处理器系统的关键字(保留/特殊字符)。请查看Java 7/8/9文档中的正则表达式,以了解String.replaceFirstString.replaceAll如何与regex变量相对应。另外,如果您使用String.replace,则Java期望的所有字符都是直接字符匹配,特别是:

yourText = yourText.replace("[NAME]%", "John");

这里是指向java.util.regex.Pattern上Sun / Oracle页面的链接:https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html

[[[注意:以下答案是Google关于base64编码的答案。我个人不太了解您的问题。让我知道您是否在谈论UTF-8? UniCode? “ Base64编码的字符串”是什么意思?

Java中base64编码的用途是什么?

使用Base64编码方案将指定的字节数组编码为String。返回一个与此编码等效的编码器实例,但没有在编码的字节数据的末尾添加任何填充字符。包装输出流以使用Base64编码字节数据编码方案。

Java中的base64编码是什么?

Base64是一种二进制到文本的编码方案,通过将其转换为基数64表示形式,以可打印的ASCII字符串格式表示二进制数据。每个Base64位数恰好代表6位二进制数据。2017年12月6日
这里是有关此问题的Sun页面的链接:https://docs.oracle.com/javase/8/docs/api/java/util/Base64.Encoder.html