我试图在字符串中转义正斜杠,它可以在使用java的路径中使用。
例如: String:: "Test/World"
现在我想使用上面的字符串路径 "Test/World"
会像在路上一样来。抱歉,如果它是重复的,但我找不到任何令人满意的解决办法。我的目的是使用上面的字符串在zookeeper中创建节点。
例子:
如果我使用下面的字符串在zokkeeper中创建节点,那么我应该将“test/world”作为一个单独的节点而不是单独的节点。zookeeper接受“/”作为路径分隔符,在某些情况下我不需要它。 /zookeeper/HellowWorld/Test/World
谢谢
5条答案
按热度按时间v7pvogib1#
我对Zookeeper一无所知。但在我看来,你好像在试图保存一个字符串列表,比如
"zookeeper", "HellowWorld", "Test/World"
,然后要使用它来创建zookeeper节点或在文件系统中创建路径名(我假设如果你使用的是一个文件系统,你会有一个子目录Test
以及一个文件或子目录World
在Test
子目录。如果您确实要创建一个名为Test/World
,放弃。linux和windows都将与您抗争。)如果是这样的话,那么就不要试图把“路径”表示为一个简单的
String
你在你的程序中传递的信息。相反,将其表示为String[]
或者ArrayList<String>
,然后仅在需要文件系统路径名时才将其转换为文件系统路径名。或者,更好的方法是用getFilesystemPath
方法。将节点名列表转换为路径名String
太早了,然后试图从String
稍后,是一种糟糕的方法,因为您会丢弃稍后需要的数据(特别是,您正在丢弃有关哪些数据的信息)/
字符是分隔符,哪些是节点名称的一部分)。**编辑:**如果你还需要一个单一的路径名为zookeeper,正如你在另一个评论中提到的,我不能帮助你,因为我不知道zookeeper,也没有找到任何在快速查看文档。如果有办法避开zookeeper的斜杠,那么我仍然建议您使用
getFilesystemPath
方法和步骤getZookeeperPath
方法,因为这两个方法可能返回不同的String
在某些情况下是不安全的。该类将在内部将名称作为数组或ArrayList
.ljsrvy3e2#
要在java中转义字符,请使用“\”,例如:
我相信你不需要逃避前斜杠,如:“/”
bd1hkmkf3#
你应该知道
File.separator
... 这比\
或者/
因为linux和windows使用不同的文件分隔符。使用File.separator
不管程序运行在哪个平台上,它都会使程序运行,毕竟这是jvm的要点不过,正斜杠也行,File.separator
会让你的终端用户更加自信。你不需要逃跑
"/
... 你也应该看到这个问题的答案p8ekf7hl4#
我们正试图解决完全相同的问题(在zookeeper中使用文件系统路径作为节点名)a我们还没有找到在节点名中使用“/”的方法。
解决方案是将“/”替换为某些不能出现在节点名称中的字符。对于路径为“/”或“\0”,在这种情况下对我们没有帮助。
另一种可能是将“/”替换为节点名称中允许的字符串,例如“test/world”->“test%@world”,“test%world”->“test%%world”,并将转义/反转义添加到保存和加载中。
如果有更直接的方法,我很乐意听。
wb1gzix05#
让我重新表述一下你的问题。您正在尝试在zookeeper中创建一个节点,它应该是/zookeeper/helloworld/nodename。但最后一部分“nodename”实际上是“test/world”,您正在寻找转义“/”的方法,因此节点名可以是“test/world”。
我认为转义字符是行不通的,除非您尝试使用unicode。
请尝试\u002f,它相当于/。