问题:如何转义文本中的多个连续下划线?
我正在使用 HTML 的标准 Thymeleaf 方言(我是not此处使用 Spring 或 SpEL)。
在 Thymeleaf 中,我可以创建一个下划线作为文字文字 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf#text-literals如下:
<div th:text="'_'"></div>
这呈现为:
<div>_</div>
我可以用同样的方式创建带有 2 个和 3 个下划线的文字:
<div th:text="'__'"></div>
<div th:text="'___'"></div>
但是对于 4 个下划线,我收到错误:
org.thymeleaf.exceptions.TemplateProcessingException:无法解析为表达式:“”
我假设 (也许不正确) 这是因为两对下划线 (__
其次是__
) 是 Thymeleaf 使用的标记表达式预处理器 https://www.thymeleaf.org/doc/tutorials/3.0/usingthymeleaf#preprocessing。当这些被删除时,我留下一个空的表达式 - 因此出现错误。
我可以使用反斜杠转义下划线(\
) 转义字符。以下全部给出了所需的结果:
<div th:text="'\_\___'"></div>
<div th:text="'\_\_\_\__'"></div>
<div th:text="'\_\_\_\___'"></div>
<div th:text="'_\_\_\_\___'"></div>
<div th:text="'\_\_\_\_\_\___'"></div>
但我不能只是逃避every下划线。
这会显示一个杂散的反斜杠:
<div th:text="'\_\_\_\_\_'"></div>
结果是:
<div>____\_</div>
So:
-
文本文字中转义下划线的规则是什么?
-
真的是预处理器导致了这种行为吗(内部文本文字) - 或者是别的什么?
是的,这绝对是预处理器的一部分。
在我看来 https://github.com/thymeleaf/thymeleaf/blob/bb2fd0e9005f8aab0de0a3f9f3897edea8084b88/src/main/java/org/thymeleaf/standard/expression/StandardExpressionPreprocessor.java#L113就像预处理器只替换完全匹配的\_\_
with __
。在任何情况下,如果你有奇数个\_
的,你会得到输出\_
——因为它不治疗\_
作为真正的逃避而只是寻找\_\_
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)