2015-05-28 81 views
0

我已經使這個小腳本來測試一些東西,但我無法得到它的工作。 我希望它將字符串中的「%20」替換爲「」。 這被打印出來:貪婪%20Cache.zipJava字符串不會被替換

package test; 

public class Test { 

    public static void main(String[] args) { 
     System.out.println(getArchivedName()); 
    } 

    private static String cacheLink = "https://dl.dropboxusercontent.com/u/Ravenous%20Cache.zip"; 

    private static String getCacheLink() { 
     return cacheLink; 
    } 

    private static String getArchivedName() { 
     String name = cacheLink.replace("%20", " "); 
     int lastSlashIndex = name.lastIndexOf('/'); 
     if (lastSlashIndex >= 0 
      && lastSlashIndex < getCacheLink().length() -1) { 
      return getCacheLink().substring(lastSlashIndex + 1); 
     } else { 
      System.err.println("Error Downloading Game Files."); 
     } 
     return ""; 
    } 

} 
+0

那是因爲你正在返回)getCacheLink的'子串('而不是'name'的子字符串。 – RealSkeptic

+0

工作得很好。正如RealSkeptic所說的,您在返回值之前將其返回。 – basic

回答

2

你打電話getCacheLink()時,會再次採取讓你回到原來的字符串

return name.substring(lastSlashIndex + 1); 
+0

謝謝,這個作品。所有人都感謝你的帖子,我相信你沒事。 – xX4m4zingXx

0

的子試試這個:

public static void main(String[] args) { 
     System.out.println(getArchivedName()); 
    } 

    private static String cacheLink = "https://dl.dropboxusercontent.com/u/Ravenous%20Cache.zip"; 

    private static String getCacheLink() { 
     return cacheLink; 
    } 

    private static String getArchivedName() { 
     String name = cacheLink.replace("%20", " "); 
     int lastSlashIndex = name.lastIndexOf('/'); 
     if (lastSlashIndex >= 0 
      && lastSlashIndex < getCacheLink().length() -1) { 
      return name.substring(lastSlashIndex + 1);//Changed 
     } else { 
      System.err.println("Error Downloading Game Files."); 
     } 
     return ""; 
    } 

您正在退回getCacheLink()而不是name

0
public class Test { 

    public static void main(String[] args) { 
     System.out.println(getArchivedName()); 
    } 

    private static String cacheLink = "https://dl.dropboxusercontent.com/u/Ravenous%20Cache.zip"; 

    private static String getCacheLink() { 
     return cacheLink; 
    } 

    private static String getArchivedName() { 
     cacheLink = cacheLink.replace("%20", " "); 
     int lastSlashIndex = cacheLink.lastIndexOf('/'); 
     if (lastSlashIndex >= 0 && lastSlashIndex < getCacheLink().length() - 1) { 
      return getCacheLink().substring(lastSlashIndex + 1); 
     } else { 
      System.err.println("Error Downloading Game Files."); 
     } 
     return ""; 
    } 
} 
+0

貪婪Cache.zip是你運行後得到的。 – Rajesh

0

不要嘗試手動處理URL解碼。

如果你想獲得的URL的最後一部分使用

import org.apache.commons.io.FilenameUtils; 
String filename = FilenameUtils.getName(url); 
//=> "Ravenous%20Cache.zip" 

然後,使用一個URL解碼器

java.net.URLDecoder.decode(filename, "UTF-8"); 
//=> "Ravenous Cache.zip"