2013-05-21 29 views
14

tôi cần phải loại bỏ tất cả các loại "khởi đầu web" từ String tôiXóa URL Prefix từ String (http: /, www, vv)

TextView của tôi phải không có "http: //", "http : // www. " , "www." và các tiền tố URL khác.

Bạn có thể giúp tôi thực hiện việc này không?

+1

Tôi không biết không có android, nhưng không có cái gì đó giống như một chức năng thay thế cho chuỗi? Sau đó, bạn chỉ có thể thay thế các chuỗi đó bằng một chuỗi rỗng và đó là ... –

+2

Việc bạn sử dụng "bắt đầu web" cho tôi biết rằng bạn có thể cần tìm hiểu một số nguyên tắc cơ bản của chương trình URI trước khi tham gia dự án này. – Jules

Trả lời

21

Bạn có thể làm điều đó bằng cách sử dụng biểu thức chính quy

"www.aaa".replaceFirst("^(http[s]?://www\\.|http[s]?://|www\\.)","") 
+6

Uh, đây không phải là ý tưởng hay, URL có thể chứa "www." ở một nơi khác. Ví dụ: '" http://mywww.com "'. – matiash

+1

@matiash bạn nói đúng. Tôi đã sửa câu trả lời của mình. cảm ơn. – kingori

+2

Thứ tự của sự phân biệt regex quan trọng ở đây - nó phải là 'replaceFirst ("^(http: // www \\. | Http: // | www \\.) "," ")' Để làm việc cho 'http : // www.' case. – Josh

6

bạn có thể sử dụng chuỗi thay thế.

String myString = "http://www.abc.com"; 
myString.replace("http://","").replace("http:// www.","").replace("www.",""); 
+3

Cùng một nhận xét như trên câu trả lời được chấp nhận, '" www. "' Có thể có mặt ở một nơi khác trong URL, bạn chỉ nên xóa nó ngay từ đầu. – matiash

3

Tôi giả sử khi bạn nói "bắt đầu từ web", nghĩa là "giao thức". Bạn có thể tìm hiểu thêm về URL trong RFC hoặc wikipedia.

Nói chung, bạn không thể xóa "www". từ URL và đảm bảo rằng URL sẽ trỏ đến cùng một máy chủ. Nếu tất cả những gì bạn muốn làm là ẩn nó khỏi người dùng, điều đó tốt, nhưng cá nhân tôi thấy rằng điều đó gây phiền nhiễu.

Đoạn mã sau sẽ loại bỏ tất cả các giao thức mà Java biết, không chỉ http. Không phải tất cả các giao thức đều có //, vì vậy bạn phải tự kiểm tra điều đó. Java URL class có thể chia nhỏ URL chính xác như bạn muốn.

import java.net.URL; 

public class test 
{ 
    public static void main(String[] args) 
    { 
     try { 
      URL url = new URL(args[0]); 
      String protocol = url.getProtocol(); 
      String result = args[0].replaceFirst(protocol + ":", ""); 
      if (result.startsWith("//")) 
      { 
       result = result.substring(2); 
      } 

      System.out.println(result); 
     } catch (Exception e) { 
      System.out.println(e); 
     } 
    } 
} 
42

Sử dụng một thể hiện của URI và sử dụng nó để chia tuy nhiên bạn muốn:

URI uri = new URI(whateverYourAddressStringIs); 
String path = uri.getPath(); // split whatever you need 

http://developer.android.com/reference/android/net/Uri.html

+10

Đây phải là câu trả lời được chấp nhận. – matiash

+2

Mã này dường như đang sử dụng 'java.net.URI' nhưng bạn liên kết đến 'android.net.Uri' mà không có bất kỳ nhận xét nào. Đó là một chút lạ. – Lii

+0

Cách chính xác sẽ là: Uri uri = Uri.parse ("http: //www.example.com "); –

Các vấn đề liên quan