繁体   English   中英

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

[英]replace special character String with another Special character

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

我需要传递此路径来读取excel文件函数,但它需要使用正斜杠替换反斜杠。

我想要像C:/Users/SXR8036/Downloads/LANE-914.xls这样的东西,即所有反斜杠都用前进的斜线替换

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

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

我必须传递String名称才能读取文件。

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

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

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

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

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

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

要么:

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

要使用replaceAll替换反斜杠,您必须在正在使用的正则表达式中正确地转义它们。

在您的情况下,正确的表达式将是:

final String path = "C:\\Users\\SXR8036\\Downloads\\LANE-914.xls";
final String normalizedPath = path.replaceAll("\\\\", "/");

由于反斜杠本身是Java字符串中的转义字符,因此需要将其转义两次才能按需运行。

通常,您可以将非常复杂的正则表达式传递给String.replaceAll 有关更多信息,请参阅java.lang.String.replaceAll的JavaDocs,尤其是java.util.regex.Pattern

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM