【背景】
要在java代码中,输入一个路径,比如:
D:\tmp\tmp_dev_root\eclipse\common_root\antlrEddlParser\src |
而想要将此路径,当做正常的字符串,在Java中赋值给String的话:
String ddFile = "D:\tmp\tmp_dev_root\eclipse\common_root\antlrEddlParser\src\preprocess_test.ddl";
会出错的。
所以,就像:
Python中的:
ddFile = r'D:\tmp\tmp_dev_root\eclipse\common_root\antlrEddlParser\src';
一样。
C#中的:
string ddFile = @"D:\tmp\tmp_dev_root\eclipse\common_root\antlrEddlParser\src";
想要找找,Java中的raw string的写法。
【解决过程】
1。随便搜了下,参考:
Raw Strings in Java – for regex in particular
结果却是:
Java中,竟然不支持Raw string。
对此,只有一个心情:
Java太挫了!!!
再加上,之前就遇到的:
- java不支持多行字符串:
- java中的正则,是到了7,才支持的name group:
等等,所以,总体上对于java的感觉就是:
Java语言,对于如此众多的,通用的,普通的功能,竟然不支持。
感觉Java真不是一般的垃圾。
毕竟,你说你要是对于某个复杂的功能,没有对应的库的支持,还说的过去;
但是你却对于语法级别的,通用的功能,竟然不支持,
作为语言设计者来说,真的不知道你是怎么想的。。。
2.虽然上述帖子中有个workaround:
This is a work-around if you are using eclipse. You can automatically have long blocks of text correctly multilined and special characters automatically escaped when you paste text into a string literal "-paste here-"; if you enable that option in window→preferences→java→Editor→Typing→"Escape text when pasting into a string literal" |
但是也不是通用的解决方案。所以还是不去采用该法了。
3.无奈。又不能让我自己去给Java本身添加此语法支持。
只能是:
手动写成:
D:\\tmp\\tmp_dev_root\\eclipse\\common_root\\antlrEddlParser\\src\\ |
然后又觉得太烦,只能换成另外一种写法了:
D:/tmp/tmp_dev_root/eclipse/common_root/antlrEddlParser/src/ |
【总结】
就一句话:
越来越发现了Java的烂。
(和Python,C#等的好了)
转载请注明:在路上 » 【整理】Java中的raw string