子字符串替换问题

时间:2012-10-05 17:04:41

标签: java android string str-replace

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

第一种形式

 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:/", "");

但不幸的是不起作用

和String myPath结果

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

有什么问题?

5 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:2)

尝试:

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

答案 2 :(得分:2)

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

答案 3 :(得分:0)

这肯定会给你你想要的东西:

String mypath=path.replaceFirst("[/]?file://[/]?","/");

答案 4 :(得分:0)

尝试:

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

或者:

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