gpt4 book ai didi

java - Java 的 String.replaceAll(...) 不适用于\\and\

转载 作者:行者123 更新时间:2023-11-29 09:50:00 24 4
gpt4 key购买 nike

我想从以下位置转换目录路径:

C:\Users\Host\Desktop\picture.jpg

C:\\Users\\Host\\Desktop\\picture.jpg

我正在使用 replaceAll() 函数和其他替换函数,但它们不起作用。

我该怎么做?

我已经打印了声明,它给了我我想要的那个,即C:\Users\Host\Desktop\picture.jpg但是现在当我传递这个变量来打开文件时,我得到了这个异常,为什么?

java.io.FileNotFoundException:C:\Users\Host\Desktop\picture.jpg

最佳答案

编辑:从 replaceAll 更改为 replace - 你在这里不需要正则表达式,所以不要使用正则表达式。 (这是 Java API 团队 IMO 的一个非常糟糕的设计决定。)

我的猜测(因为您没有提供足够的信息)是您在做类似的事情:

text.replace("\\", "\\\\");

字符串在Java中是不可变的,所以你需要使用返回值,例如

String newText = oldText.replace("\\", "\\\\");

如果这不能回答您的问题,请提供更多信息。

(我还建议通常你无论如何都不应该自己做 - 如果这是为了将信息包含在 JSON 响应之类的东西中,我希望更广泛的库为你执行转义。)

请注意,需要加倍,因为 \ 是 Java 字符串(和字符)文字的转义字符。请注意,与 replaceAll 不同,replace 不会将输入视为正则表达式模式,因此无需执行进一步的加倍操作。

编辑:您现在得到一个 FileNotFoundException,因为不是一个带有双反斜杠的文件名 - 是什么让您认为有?如果你想把它作为一个有效的文件名,为什么要加倍反斜杠?

关于java - Java 的 String.replaceAll(...) 不适用于\\and\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9131416/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com