我当然希望这将得到支持:
private static void regex() { String plain = "\\w+"; String withTextBlocks = """ \w+ """; }
但是withTextBlocks不能在Java-17下编译。难道我们不应该转义文本块吗?我已经看过JEP,也许那里有解释,但是我不能通过它。如果有人知道的话,第二个问题是,是否有未来的JEP?谢谢。
withTextBlocks
qij5mzcb1#
您正在将 *text block * 与 *raw string * 合并。这是不同的特性,尽管它们是一起探索的,这可能解释了为什么您在心理上将它们合并在一起。目前还没有对raw string的支持(结果证明它们比最初看起来更滑。)我们不应该逃避文本块的意义吗?不,这不是文本块的意义。文本块的意义在于允许我们在代码中表示 * 二维 * 文本块,保留块的相对缩进而不是绝对缩进。这允许我们自由地缩进文本块本身的源代码表示,以匹配周围的代码,而不影响文本块描述的字符串的缩进。另一个设计目标是,文本块与普通字符串文字的不同之处仅在于它们的二维性质。不应有不同的转义字符集或不同的转义规则。(如果我们使用原始字符串,它应该同样适用于文本块和传统的字符串文字。)如果文本块按照您希望的方式工作,您可能会抱怨不能对单行字符串做同样的处理。这些方面是正交的,语言应该正交地对待它们。
1条答案
按热度按时间qij5mzcb1#
您正在将 *text block * 与 *raw string * 合并。这是不同的特性,尽管它们是一起探索的,这可能解释了为什么您在心理上将它们合并在一起。目前还没有对raw string的支持(结果证明它们比最初看起来更滑。)
我们不应该逃避文本块的意义吗?
不,这不是文本块的意义。文本块的意义在于允许我们在代码中表示 * 二维 * 文本块,保留块的相对缩进而不是绝对缩进。这允许我们自由地缩进文本块本身的源代码表示,以匹配周围的代码,而不影响文本块描述的字符串的缩进。
另一个设计目标是,文本块与普通字符串文字的不同之处仅在于它们的二维性质。不应有不同的转义字符集或不同的转义规则。(如果我们使用原始字符串,它应该同样适用于文本块和传统的字符串文字。)如果文本块按照您希望的方式工作,您可能会抱怨不能对单行字符串做同样的处理。这些方面是正交的,语言应该正交地对待它们。