我需要驗證在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所有的時間。
任何東西都可以是網址。你確定你需要這個嗎? – bzlm 2012-07-30 14:09:23
看看這個答案: http://stackoverflow.com/a/163398/1177083 – 4ndro1d 2012-07-30 14:11:18
是的,我需要能夠判斷它是否是地址,因爲如果我將該字符串傳遞給我其他方法我的程序會崩潰。這是必須的字符串是IP或網絡地址 – 2012-07-30 14:11:19