到目前为止,我对文件路径进行了硬编码,以便保存事实或将它们加载到内存中,但是当我使用 showSaveDialog() 请求文件并使用 getAbsolutePath 获取路径和名称时,我对代码进行了修改()。代码片段如下:
int retVal = fs.showSaveDialog(this);
if (retVal == fs.APPROVE_OPTION){
fn = fs.getSelectedFile().getAbsolutePath();
.
.
.
现在,接收字符串的变量称为 fichero,用于 jess 句子,如下所示:
motor.eval("(save-facts "+fichero+")");
motor 是 rete 引擎的实例。问题是 jess 使用字符串,但带有简单的反斜杠“\”,并且它无法正确保存,因为它获取所有字符串作为文件名。我使用过 Jess 控制台并注意到相同的字符串但带有双反斜杠 '\' 将其正确保存到指定的路径中。我怎样才能用字符串 fichero 上的双斜杠替换单斜杠?我尝试使用 fichero.replaceAll() 方法,使用两个字符串作为参数,一个带有单斜杠,另一个带有双斜杠,但似乎 java 不明白它。所描述的参数声明为 String var1 = "\"和 String var2 = "\\"。使用 println 我观察到每个反斜杠分别有一个和两个反斜杠,但在应用于 ReplaceAll() 方法时似乎不起作用。有人可以帮忙吗?提前致谢!
replaceAll 中的第一个字符串是一个模式。在模式中,必须通过在另一个反斜杠前面添加前缀来转义单个“\”。在替换字符串中,“\”也有特殊含义。
s = s.replaceAll( "\\\\", "\\\\\\\\" );
奇怪,但尽管如此......
我是一名优秀的程序员,十分优秀!