例如我们需要将
* filePath: \upload\application\2019\08\07\1565157799645_3CDDB9B08A2D1DF34DF6221F4874A956.pdf
替换成
* returnPath: /upload/application/2019/08/07/1565157799645_3CDDB9B08A2D1DF34DF6221F4874A956.pdf
1首先要注意的事是:如果我就要显示一段含有斜杠的字符串内容,例如"abc\d\efg"怎么办?
1、直接写一个斜杠会被认为是转义符,不仅不会被Java理解为一般的斜杠字符,
2、而且还会发生错误(例如没有\d这种转义规定),
3、所以,当要显示普通斜杠的时候,就要在斜杠前加一个转义符也就是斜杠,用两个斜杠("\\")来告诉Java是要表达一个普通斜杠字符的意思。
4、以此类推,四个斜杠就是表达两个普通斜杠字符的意思,等等。
2尝试使用了replaceAll()方法
方法介绍:replaceAll() 方法使用给定的参数 replacement 替换字符串所有匹配给定的正则表达式的子字符串(成功则返回替换的字符串,失败则返回原始字符串)
String returnPath = filePath.replaceAll("\\", "/");
会报如下的错误信息
java.util.regex.PatternSyntaxException: Unexpected internal error near index 1 \^
查询百度后了解到 在regex中"\\"表示一个"\",在java中一个"\"也要用"\\"表示。这样,前一个"\\"代表regex中的"\",后一个"\\"代表java中的"\"。所以要想使用replaceAll方法将字符串中的反斜杠("\")替换成空字符串(""),则需要这样写:filePath.replaceAll("\\\\","");
修改代码后为 String returnPath = filePath.replaceAll("\\\\", "/");
重新运行结果成功 /upload/application/2019/08/07/1565157799645_3CDDB9B08A2D1DF34DF6221F4874A956.pdf