来自Perl,我肯定错过了"here-document"在源代码中创建多行字符串的方法:
$string = <<"EOF" # create a three-line string
text
text
text
EOF
Run Code Online (Sandbox Code Playgroud)
在Java中,我必须在每一行都有繁琐的引号和加号,因为我从头开始连接多行字符串.
有哪些更好的选择?在属性文件中定义我的字符串?
编辑:两个答案说StringBuilder.append()优于加号表示法.任何人都可以详细说明他们为什么这么认为?它看起来并不比我更好.我正在寻找一种方法,即多行字符串不是一流的语言结构,这意味着我绝对不希望用方法调用替换第一类语言结构(字符串连接加上).
编辑:为了进一步澄清我的问题,我根本不关心表现.我担心可维护性和设计问题.
假设你有一个字符串文字,里面有很多引号.你可以逃避所有这些,但这是一种痛苦,难以阅读.
在某些语言中,您可以这样做:
foo = '"Hello, World"';
Run Code Online (Sandbox Code Playgroud)
但是,在Java中,s ''用于chars,因此不能以String这种方式使用它.有些语言有解决此问题的语法.例如,在python中,您可以这样做:
"""A pretty "convenient" string"""
Run Code Online (Sandbox Code Playgroud)
Java有类似的东西吗?
如何在Eclipse JDT中将多行选择转换为String.如下所示
从:
xxxx
yyyy
zzz
Run Code Online (Sandbox Code Playgroud)
至:
"xxxx " +
"yyyy " +
"zzz"
Run Code Online (Sandbox Code Playgroud)
我尝试了以下模板
"${line_selection}${cursor}"+
Run Code Online (Sandbox Code Playgroud)
但是这样我只能将整个区块分别包围而不是每条线.如何实现多线处理,例如评论所选块?
对于JAVA开发,我需要写一个包含"\ r\t \n <>"字符串的文件,因为从Java我想编写一个PHP文件.如果您无法理解,请查看此示例:
BufferedWriter buffW = new BufferedWriter(fileW);
buffW.write("<?php\n\n\tclass MyClass {\n\tpublic function test()\n}\n}\n?>");
Run Code Online (Sandbox Code Playgroud)
这是一个乱码的代码,我想写一个干净的如PHP可以做的,但是在Java替代方式上找不到例如:
<?php
$mystring = <<<EOT
This is some PHP text.
It is completely free
I can use "double quotes"
and 'single quotes',
plus $variables too, which will
be properly converted to their values,
you can even type EOT, as long as it
is not alone on a line, like this:
EOT;
?>
Run Code Online (Sandbox Code Playgroud) 我需要处理包含Java中的换行符的长字符串.这些是用于HTML生成的,但它并不是最重要的.
我知道Java在没有heredocs的方式上是残废的.但是我还可以使用其他机制:
1)字符串连接(或StringBuilders),不是非常易读和可复制粘贴.
2)在.properties文件中存储字符串,要么不是非常易读,要么具有更高的复制性.
3)将每个"heredoc"存储在单独的.txt文件中,非常易读且可以复制,但会产生大量的txt文件.
4)模板引擎,如Velocity或Freemarker - 将设计移出Java,需要大量的地图操作,这将是相当不错的,但Velocity语法和循环/如果能力不像Smarty那样可读
每个人都有利弊,我想选择3,但由于纯粹的意识形态原因,管理层更喜欢1.我想在Java中使用heredocs有一些标准,可能是库让事情变得更容易.我很感激任何建议(有很好的论据)如何使用heredocs.
感谢名单