本文已参与「新人创作礼」活动,一起开启掘金创作之路。
1. 正则表达式转义
Java 代码中使用到正则表达式里含有特殊字符时需要使用转义符\
进行转义。
. ? * + ! ^ $ [ ] ( ) \
因为反斜线\
也是特殊字符,所以特殊符号的转义需使用双反斜线\\
,否则会报java.util.regex.PatternSyntaxException
异常。
public static void main(String[] args) {
String string = "435212.jpg";
if (string.contains(".")) {
System.out.println("包含一个点");
}
String suffix = string.split("\\.")[1];
System.out.println(suffix);
}
上面代码的运行结果是:
可以看出 contains
方法不需要转义,而 split
方法就需要转义了,所以 JDK API 中只有参数是正则表达式的地方才需要转义。
java.lang.String
类中参数是正则表达式regex
的方法有:
public boolean matches(String regex);
public String replaceFirst(String regex, String replacement);
public String replaceAll(String regex, String replacement);
public String[] split(String regex);
public String[] split(String regex, int limit);
示例:将 List 通过正则转换为 SQL 中 IN 条件字符串(使用了 replaceAll
方法):
public static void main(String[] args) {
List<String> list = new ArrayList<>();
list.add("aaaa");
list.add("bbbb");
String str = "('" + list.toString().replaceAll("\\[|\\]|\\s", "").replaceAll(",", "','") + "')";
System.out.println(str);
}
2. 文件路径转义
Windows 下路径写法,间隔符使用双反斜线\\
:
C:\\Users\\QPING\\Desktop\\JavaScript\\2.html
Linux 下路径写法,间隔符用斜线/
:
/site/images/qiyinwang/userid/xxxxx.jpg
或者在 Java 中可以直接使用File.separator
,可以自动识别为对应操作系统下的文件间隔符:
//文件保存路径 D:\tempPicture.jpg
String path = "D:"+File.separator+"tempPicture.jpg";
//文件保存路径 /site/tempPicture.jpg
String path = File.separator+"site"+File.separator+"tempPicture.jpg";