java - 用另一个特殊字符替换特殊字符字符串

标签 java

我有一个字符串,它是从我的系统动态获取的路径。 我将它存储在一个字符串中。
C:\Users\SXR8036\Downloads\LANE-914.xls

我需要传递这个路径来读取excel文件函数,但是它需要将反斜杠替换为正斜杠。

我想要像 C:/Users/SXR8036/Downloads/LANE-914.xls 这样的东西 即所有反斜杠替换为正斜杠

使用字符串替换方法,我只能用 a-z 字符替换,但是当我替换特殊字符时它会显示错误

something.replaceAll("[^a-zA-Z0-9]", "/");

我必须传递字符串名称才能读取文件。

最佳答案

在这种情况下最好使用非正则表达式 replace() 而不是正则表达式 replaceAll()。您不需要为此替换使用正则表达式,它使事情变得复杂,因为它需要额外的转义。反斜杠在 Java 和正则表达式中都是一个特殊字符,所以在 Java 中,如果你想要一个直反斜杠,你必须将它加倍 \\ 如果你想在 Java 正则表达式中使用一个直反斜杠你必须将它翻四倍 \\\\

something = something.replace("\\", "/");

在幕后,replace(String, String) 使用正则表达式模式(至少在 Oracle JDK 中),因此有一些开销。在您的特定情况下,您实际上可以使用单个字符替换,这可能更有效(这可能并不重要!):

something = something.replace('\\', '/');

如果你要使用正则表达式:

something = something.replaceAll("\\\\", "/");

或者:

something = something.replaceAll(Pattern.quote("\\"), "/");

关于java - 用另一个特殊字符替换特殊字符字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35955245/

相关文章:

java - Java中将整数转换为int数组

java - BluetoothSocket OutputStream.write() 问题

java线程立即更新UI

java - 如何打印字符串

java - Android - getApplicationContext 出错

java - JBoss AS 7 关闭 - 连接管理器在 WAR 部署停止之前关闭

java - 尝试使用资源关闭套接字

java - jpa 生成值在哪里持久化/如何增加它

List<Object> 上的 Java 流获取任何匹配 filter() 的对象的属性

java - 多线程中困惑的输出显示死锁?