我刚刚尝试了 Java 13 中的新文本块功能,遇到了一个小问题。
右三引号会影响格式。
String query = """
select firstName,
lastName,
email
from User
where id= ?
""";
System.out.println("SQL or JPL like query string :\n" + query);
上述格式效果很好。为了与结束分隔符 (""") 对齐,多行字符串在每行之前留有空格。
但是当我尝试比较以下两个文本块字符串时,它们在输出控制台中的格式相同,但它们不等于,即使在stripIntent
.
String hello = """
Hello,
Java 13
""";
String hello2 = """
Hello,
Java 13
""";
System.out.println("Hello1:\n" + hello);
System.out.println("Hello2:\n" + hello);
System.out.println("hello is equals hello2:" + hello.equals(hello2));
System.out.println("hello is equals hello2 after stripIndent():" + hello.stripIndent().equals(hello2.stripIndent()));
输出控制台如下:
hello is equals hello2:false
hello is equals hello2 after stripIndent():false
我不确定哪里错了,或者这是文本块的设计目的?
更新:只需打印 hello2 stripIntent,
System.out.println("hello2 after stripIntent():\n" + hello2.stripIndent());
每行之前的空格不会stripIntent
按预期删除。
更新:阅读相关的java文档后,我认为在文本块编译后,它应该已经剥离了块中行的左意图。文本块的目的是什么?stripIntent
我知道在普通字符串上使用它很容易理解。
完整的代码在这里。