如何找到文件路径字符串的一部分?

时间:2013-07-12 18:10:06

标签: regex grails groovy

以下是我在groovy中尝试做的事情:

def url = "\\data\\aaa\\Service\\111"
def d = url.find("\\data\\aaa\\Service")

但是dnull,根据文档意味着它无法找到匹配项。

我已经测试过没有斜线并且工作正常,所以我知道这个问题与斜杠有关。

如何在常规\\data\\aaa\\Service中找到\\data\\aaa\\Service\\111

修改

到目前为止,这是我的问题并尝试解决它:

  • url/data/cpp/Service/111
  • 的形式出现
  • folder.path返回\data\cpp\Service\111\222

所以我试图将网址中的"/"转换为"\" url = "\data\cpp\Service\111"

然后,我需要从url返回

中移除folder.path部分

以下是对此努力的反映:

def getList(String url) {
    def list = []
    def dir = new File(url)
    url= url.replaceAll("/", "\\\\")
    def d = url.find("\\\\data\\\\aaa\\\\Service")
    dir.eachDirRecurse
        { folder ->
            list << folder.path.replaceAll(url,'')
        }
    return list
}

但是没有任何内容被替换,因为它无法在url中找到folder.path

2 个答案:

答案 0 :(得分:0)

你需要逃避斜杠。以下内容可能有效:

def d = url.find("\\\\data\\\\aaa\\\\Service")

答案 1 :(得分:0)

我没有在URL中更改“/”斜杠,而是更改了folder.path

返回的任何内容中的“\”斜杠。

然后我从folder.path输出中删除了URL。

def getFolder(String url) {
    def list = []
    def dir = new File(url)
    dir.eachDirRecurse
        { folder ->
            list << folder.path.replaceAll("\\\\", "/").replaceAll(url, '')
        }
        return list
}

感谢您的帮助。