我正在尝试使用NoIndentWriter类来解决我面临的与在多行字符串中插入空格相关的问题。
然而,它似乎NoIndentWriter
不仅仅是不自动缩进。特别是它会修剪所有前导(但不是尾随空格),即使明确存在于模板中也是如此。
例如,使用以下模板文件:
$ cat src/templates/a.xml.stg
ladder(value)::=<<
0
1
2
3
^value^
>>
...以及以下代码:
public static void main(String args[]) throws Exception {
STGroup stGroup = new STGroupFile("templates/a.xml.stg", '^', '^');
ST st = stGroup.getInstanceOf("ladder");
st.add("value", "4");
StringWriter sw = new StringWriter();
NoIndentWriter w = new NoIndentWriter(sw);
st.write(w);
String result = sw.toString();
System.out.printf("result is:\n%s\n", result);
PrintWriter pw = new PrintWriter("out");
pw.println(result);
pw.close();
}
...产生以下内容:
$ cat out
0
1
2
3
4
通过检查该out
文件,可以看到模板文件中存在的尾随空格被保留,但前导空格被修剪。
有没有办法指示 StringTemplate 在不使用AutoIndentWriter的情况下保留模板文件中的空格(因为它遇到了这个问题)?