2012-07-30 73 views
2

我需要驗證在TextEdit中輸入的字符串是否是Web地址,例如。 「www.stackoverflow.com」或一個IP地址例如。 「64.34.119.12」。我已經試過這兩種方法,但沒有成功。我有私人類變量名爲IP。檢查字符串是web地址還是ip on android

方法1:

public boolean isAdress(){ 

     boolean isaddr = true; 
     try 
     { 
      ip = new NetTask().execute(""+textEdit1.getText()).get(); 
     } 
     catch (Exception ex) 
     { 
      isaddr = false; 
     } 
     return isaddr; 
    } 

方法2是一個人我把它發送到NetTask前檢查字符串。

public boolean isAdress(){ 
     String adress = textEdit1.getText().toString(); 
     boolean isaddr = true; 
     if (adress.length() > 0) { 
      String[] nums = adress.split("."); 
      if (nums.length == 4) { 
       for (String str : nums) { 
        int i = Integer.parseInt(str); 
        if ((i < 0) || (i > 255)) { 
         isaddr = false; 
        } 
       } 
      } 
     } 
     return isaddr; 
    } 

第二種方法也不能wotk,但即使那樣,它不會是能夠驗證網絡ADRESS。

那麼有沒有什麼辦法可以驗證這兩種情況下的字符串?

編輯: 閱讀正則表達式後,這個方法我試過也:

private String regex = "\\b(https?|ftp|file)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]"; 

public boolean isAdress(){ 
     String adress = textEdit1.getText().toString(); 
     try { 
      Pattern patt = Pattern.compile(regex, Pattern.CASE_INSENSITIVE); 
      Matcher matcher = patt.matcher(adress); 
      return matcher.matches(); 
     } catch (RuntimeException e) { 
     return false; 
    }   
    } 

,但它似乎返回false所有的時間。

+0

任何東西都可以是網址。你確定你需要這個嗎? – bzlm 2012-07-30 14:09:23

+0

看看這個答案: http://stackoverflow.com/a/163398/1177083 – 4ndro1d 2012-07-30 14:11:18

+0

是的,我需要能夠判斷它是否是地址,因爲如果我將該字符串傳遞給我其他方法我的程序會崩潰。這是必須的字符串是IP或網絡地址 – 2012-07-30 14:11:19

回答

5

簡短的回答:嘗試使用正則表達式!

編輯:

if(textEdit1.getText().matches(REGEX_URL)) { 
    //DO URL THINGS 
} 

if(textEdit1.getText().matches(REGEX_IPADDRES)) { 
    //DO IP THINGS 
} 

如果谷歌你可以找到IP地址和URL正確的正則表達式的串...

注: 一種網址的正則表達式可以爲你想要的東西不同,你只想要http:// https://或所有有效的網址(如market://)...

+0

現在你已經引誘@RohitMalish到[URL驗證的黑洞](http://mathiasbynens.be/demo/url-regex)。 – bzlm 2012-07-30 14:10:13

+0

使用正則表達式有多簡單?我很新的android。當你不需要NetTask的東西時,在桌面上很容易。 – 2012-07-30 14:13:23

+0

我會在一分鐘內更新信息;) – Ferdau 2012-07-30 14:25:44

-3

簡單的方法怎麼樣?檢測它是否是IP地址,例如

public static boolean isIP(String input) { 

     if (input.contains(".") && input.length()>1) { 
      return TextUtils.isDigitsOnly(input.replace(".", "").trim()); 
     } 
     else { 
      return false; 
     } 
    } 
+0

那麼你不檢查,如果你的數字在0到255之間例如 – 2015-08-12 10:11:34

1

Patterns.IP_ADDRESS.matcher(url).matches();

相關問題