對於URL http://questions/ask/stackoverflow.xhtml,需求是獲得stackoverflow。 用於獲取此頁面名稱的模式是什麼? 可以使用子字符串,但我讀到模式Matcher的性能會更好。java模式獲取帶擴展名的頁面名稱
0
A
回答
1
對於特定的網址,你可以使用:
String url = "http://questions/ask/stackoverflow.xhtml";
String pname = url.split("/")[4].split("\\.")[0];
對於更有效(在沒有業績的正則表達式的計算)基於模式的解決方案考慮這個問題:
String url = "http://questions/ask/stackoverflow.xhtml";
Pattern pt = Pattern.compile("/(?![^/]*/)([^.]*)\\.");
Matcher matcher = pt.matcher(url);
if(matcher.find()) {
System.out.println("Matched: [" + matcher.group(1) + ']');
// prints Matched: [stackoverflow]
}
2
我猜想,一個正則表達式解決方案會更復雜(可能更慢)。這是我會怎麼做沒有他們:
public static String getFilename(String s) {
int lastSlash = s.lastIndexOf("/");
if (lastSlash < 0) return null;
int nextDot = s.indexOf(".", lastSlash);
return s.substring(lastSlash+1, (nextDot<0) ? s.length() : nextDot);
}
String url = "http://questions/ask/stackoverflow.xhtml";
getFilename(url); // => "stackoverflow"
當然,如果該URL沒有文件名,那麼你會得到主機名代替。您可能最好解析URL,解壓文件部分,並刪除路徑和擴展名。這樣的事情:
public static String getFilename2(String s) {
URL url = null;
try {
url = new URL(s);
} catch (MalformedURLException mue) { return null; }
String filePart = url.getFile();
if (filePart.equals("")) return "";
File f = new File(filePart);
String filename = f.getName();
int lastDot = filename.lastIndexOf(".");
return (lastDot<0) ? filename : filename.substring(0, lastDot);
}
+1
使用'URL'對象是最正確的方法來做到這一點,它將正確處理任何**正確形成的URL,某些特定的正則表達式將在某處輸入中斷。 – 2012-02-29 21:38:18
相關問題
- 1. 如何從網址獲取頁面名稱(不帶擴展名)
- 2. 按擴展名稱查找頁面
- 3. 獲取父頁面名稱
- 4. 獲取帶有所有獲取信息的PHP頁面名稱
- 5. 從擴展類中獲取類名稱
- 6. 獲取除擴展名外沒有擴展名的文件名
- 7. url包含頁面名稱和擴展名之間的雙點
- 8. 用擴展名獲取數據.java
- 9. 在java中獲取文件擴展名
- 10. 在沒有xml文件擴展名的頁面中獲取帶有HTTPRequest的xml
- 11. 獲取文件名不帶擴展名的Python
- 12. 獲取不帶擴展名的文件名,textmade包編輯器
- 13. 帶有「.py」擴展名的google.com網頁?
- 14. 獲取文件擴展名
- 15. ServletRequest獲取實際頁面的名稱
- 16. 通過PHP獲取頁面的名稱?
- 17. 從URL和帶文件擴展名獲取文件名
- 18. 在C#Stacktrace中獲取短文件名(帶擴展名)?
- 19. 使用CMake獲取目標文件名,不帶擴展名
- 20. 獲得文件的擴展名而不知道擴展名,無模式
- 21. Java:使用「。」獲取文件的擴展名。在它的名字
- 22. 擴展名稱不同的模塊
- 23. 從URL獲取域名擴展名?
- 24. 獲取文件上傳名稱和擴展名在JS
- 25. 通過名稱獲取文件擴展名
- 26. 在java中獲取友好URL的文件名和擴展名
- 27. 在MediaWiki中從URL編碼的頁面名稱獲取頁面名稱
- 28. 如何獲得頁面文件名稱,減去Jekyll中的擴展名(即基本名稱)?
- 29. 帶擴展名的Swift3 CoreData
- 30. 從背景頁面獲取iframe擴展名爲Chrome123 popup
該網址可以是任何東西。但是我們必須只找到頁面名稱。在這種情況下,stackoverflow – user679526 2012-02-29 20:50:47
然後它更好地使用我的基於模式的解決方案,這將適用於任何URL。 – anubhava 2012-02-29 21:02:33
**最好的**解決方案是使用'URL'對象,它適用於正則表達式沒有考慮到的所有URL。 – 2012-02-29 21:39:03