如果生成的代码在 JBS 技术中作为最终代码执行,odiRef.getQuotedString 会有所帮助。当我们以下列方式使用它时(在 ?-、$- 或 @-substitution 中):
<$
String SEL_COLS = <%=odiRef.getQuotedString(odiRef.getColList(0, "", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", ""))%>;
$>
然后结果像这样失败:
... Caused by: org.apache.bsf.BSFException: BeanShell script error:
Parse error at line 3, column 37. Encountered: Entry BSF info: ....
... 11 more
Text: <$
String SEL_COLS = "SOURCE_TAB.\"Entry Number\" ENTRY_NUMBER";
$>.
这看起来不错,但不起作用。它可以作为 JBS Technology 中的最终代码(我的意思是所有替换的结果)。不幸的是,任何替换都会吃反斜杠。
好的,如果标准的 odiRef-function 不起作用,让我们自己编写:
<%
String getQuotedStringCustomized(String s){
return '"'+s.replaceAll('"'.toString(),'"'+"+'"+'"'+"'+"+'"')+'"';
}
%>
-- other code........
<$
String SEL_COLS = <%=getQuotedStringCustomized(odiRef.getColList(0, "", "[EXPRESSION]\t[ALIAS_SEP] [CX_COL_NAME]", ",\n\t", "", ""))%>;
$>
在 JBS 替换中将 " 放入 Java 文字的唯一方法是使用 Char 文字 '"' 或在无法使用 Char 类型时使用 '"'.toString() 表达式。
最后:
在最终的 JBS 代码中,您可以使用 \",但只能在替换中使用 +'"'+。