0

我有一个可以采用两种形式的字符串

第一种形式

 file:///mnt/sdcard/myfolder/myfile.txt

第二种形式

 /file://mnt/sdcard/myfolder/myfile.txt

而且我需要始终采用形式的字符串

/mnt/sdcard/myfolder/myfile.txt

所以我使用了替换命令

myPath=path.replace("file://", "");
myPath= path.replace("/file:/", "");

但不幸的是不起作用

和字符串 myPath 结果

file:///mnt/sdcard/myfolder/myfile.txt

怎么了?

4

5 回答 5

5

如果您保证您的字符串将始终采用这两种形式之一,为什么不直接使用

myPath = path.substring(path.indexOf("/mnt"));

如果你不确定你的路径是否包含“/mnt”,你可以试试这个:

if (path.contains("file:"))
{
    myPath = path.substring(path.indexOf(":/") + 1);
    while (myPath.startsWith("//"))
        myPath = myPath.substring(1);
}
于 2012-10-05T17:09:07.060 回答
2

尝试:

path=path.replace("file://", "");
myPath= path.replace("/file:/", "");
于 2012-10-05T17:07:37.257 回答
2

您用第二个调用覆盖第一个myPath = path.replace()调用,这可能不会替换任何内容并返回整个字符串。

于 2012-10-05T17:09:16.333 回答
0

这肯定会给你你想要的:

String mypath=path.replaceFirst("[/]?file://[/]?","/");
于 2012-10-05T17:17:59.340 回答
0

尝试:

path = path.replaceAll("^(file://|/file:/)", "");

或者:

myPath=path.replace("file://", "");
myPath= **myPath**.replace("/file:/", "");
于 2012-10-05T17:31:22.837 回答