![]() |
1
37
不,没有。 通常,您会将原始字符串和正则表达式放在属性文件中,但它们也有一些转义序列要求。 |
![]() |
2
46
如果您使用Eclipse,这是一个解决方案。 在将文本粘贴到字符串文本中时,可以自动对长文本块进行正确的多行和特殊字符转义。 “粘贴在这里”; 如果在 窗口的首选项,即Java JavaY编辑器,类型为:“当粘贴到字符串文本时,转义文本” |
![]() |
3
25
我用 Pattern.quote . 它解决了这个问题。因此:
Quote方法返回一个与所提供的字符串参数匹配的字符串,返回字符串是我们的案例中正确引用的字符串。 |
![]() |
4
11
不(很遗憾)。 |
![]() |
5
3
将原始文本文件放在类路径中,并使用getresourceasstream(…)读取它。 |
![]() |
6
3
( Properties files 是常见的,但混乱的-我把大多数regex视为代码,并把它放在我可以引用的地方,您也应该这样做。至于实际问题:) 是的,有很多方法可以解决可读性差的问题。你可以试试:
尽管这需要在更新时小心。Eclipse提供了一个选项,允许您在引号之间粘贴文本,并为您应用转义序列。策略是先编辑可读的版本,然后删除垃圾,并将它们粘贴在空引号“”之间。 想法时间: 黑客你的编辑器来转换它们;作为插件发布。我到处查看插件,但没有找到(尝试搜索)。转义的源字符串和文本框文本(折扣\n、\r\n)之间有一对一的对应关系。也许可以使用结尾有两个引号的突出显示的文本。
其中是突出显示的任何字符-换行符被视为换行符。在突出显示区域内键入或粘贴的文本将在“真实”源中转义,并显示为不显示。(与Eclipse对粘贴的文本进行转义的方式相同,这将转义键入的文本,并且不显示反斜杠。)如果要正常编辑,请删除其中一个引号以导致语法错误。隐马尔可夫模型。 |
![]() |
7
3
注:截至今日,不提供。可能我会在功能发布时再次编辑这个答案。 There is an ongoing proposal to introduce Raw Strings in Java . 它们实际上在regex的情况下非常有用。 例1: 一个正则表达式字符串,它被编码为
可交替编码为
因为反斜杠没有特殊意义。 实例2: 一个多行字符串文本,带有外文附录。
可交替编码为
这样就不需要中间引号、连接和显式换行。 希望我们能尽快发布。 |
![]() |
8
2
String#getBytes() 显示每个字符串对象中包含的内部字节数组的副本,该对象实际包含16位UTF-16编码字符串-字节数组将包含转换为与平台默认字符集匹配的相同字符串。我想说的是,我认为这与Java中的“原始”字符串很接近。 |
![]() |
9
0
您可以编写自己的非转义属性读取器,并将字符串放入资源文件中。 |
![]() |
10
0
我个人认为regex字符串是数据而不是代码,所以我不喜欢在我的代码中使用它们——但我意识到这是不切实际和不受欢迎的(是的,我意识到了,你不必对我大喊大叫)。 考虑到没有本土的方法可以做到这一点,我可以想出两种可能性(好吧,三种,但第三种是,嗯,不自然)。 所以我个人的偏好是将一个文件解析成字符串。您可以命名文件中的每个条目,并将它们全部加载到哈希表中,以便从代码中轻松访问。 第二个选择,创建一个文件,该文件将被预处理到Java接口;它可以逃脱正则表达式,因为它这样做。我个人讨厌代码生成,但是如果Java文件是100%,从来没有人编辑过,这不是太坏(真正的邪恶是生成的文件,你希望编辑!) 第三种方法(很棘手,可能是个坏主意):您可以创建一个自定义doclet,在编译时将注释中的字符串提取到文本文件或头文件中,然后使用上面另外两种方法之一。这会将字符串保存在使用它们的同一个文件中。这可能真的很难做到正确,而且失败的惩罚是极端的,所以我甚至不会考虑它,除非我有一个压倒性的需要和一些相当令人印象深刻的人才。 我只是建议这样做,因为评论是自由形式的,“pre”标签中的内容对于格式化程序和其他系统缺陷非常安全。doclet可以在打印javadocs之前提取它,甚至可以添加一些生成的javadocs来指示您使用regex字符串。 在投反对票并告诉我这是一个愚蠢的想法之前——我知道,我只是觉得我会建议它,因为它很有趣,但是我的偏好,如我上面所说,是一个简单的文本文件…… |
![]() |
11
0
不需要。但是有一个Intellij插件,它可以让这个更容易处理,调用 String Manipulation . Intellij还将自动转义粘贴到其中的字符串。(恐惧) points out ,Eclipse有一个插件来启用它。) |