【发布时间】:2016-12-25 14:07:08
【问题描述】:
我使用Android Studio 2.2.2。我有这样的代码:
new StringBuilder ( ).append ( "<script type='text/x-mathjax-config'>" ).append ( "MathJax.Hub.Config({ " ).append ( "showMathMenu: false, " ).append ( "jax: ['input/TeX','output/HTML-CSS'], " ).append ( "extensions: ['tex2jax.js','toMathML.js'], " ).append ( "TeX: { extensions: ['AMSmath.js','AMSsymbols.js'," ).append ( "'noErrors.js','noUndefined.js'] }, " ).append ( "});</script>" ).append ( "<script type='text/javascript' " ).append ( "src='file:///android_asset/MathJax/MathJax.js'" ).append ( "></script>" ).append ( "<span id='math'></span><pre><span id='mmlout'></span></pre>" ).toString ( )
如您所见,它很长并且用一行表示。有没有办法把它转换成这个:
new StringBuilder ( )
.append ( "<script type='text/x-mathjax-config'>" )
.append ( "MathJax.Hub.Config({ " )
.append ( "showMathMenu: false, " )
.append ( "jax: ['input/TeX','output/HTML-CSS'], " )
.append ( "extensions: ['tex2jax.js','toMathML.js'], " )
.append ( "TeX: { extensions: ['AMSmath.js','AMSsymbols.js'," )
.append ( "'noErrors.js','noUndefined.js'] }, " )
.append ( "});</script>" )
.append ( "<script type='text/javascript' " )
.append ( "src='file:///android_asset/MathJax/MathJax.js'" )
.append ( "></script>" )
.append ( "<span id='math'></span><pre><span id='mmlout'></span></pre>" )
.toString ( )
在上面的每一行都以.append() 开头,并且只包含其中一个。这更具可读性。
注意:
- 上面的代码是一个例子,所以性能在这里并不重要。
- 我知道我可以去
Settings > Editor > General并选择Use soft wrap in editor和Use original line's indent for wrapped parts,但结果是这样的,不可读:
【问题讨论】:
-
您不能使用 StringBuilder 而是使用 Freemarker 或其他 HTML 模板
-
@cricket_007 看来你提议
template engines。但我想在Android Studio(例如code reformatting)中找到一种方法来为我做这件事。 -
编辑器 - 代码风格 - Java - 链式方法调用。选择“如果长则砍掉”和“多行时对齐”。或者使用 kotlin 和它的多行字符串 :-) 但是你不应该在这里首先使用 StringBuilder 。只需使用
+连接字符串的各个部分。奖励:连接将发生在编译时而不是运行时。 -
我明白你想要什么,我只是觉得没有必要。还有其他专门用于 MathJax 的库
-
@JBNizet 感谢您的回复。请将您的评论添加为答案,以便我将其标记为已接受的答案并可能对其他人有所帮助。
标签: android-studio intellij-idea code-formatting