TextEdit に入力された文字列が Web アドレスであるかどうかを検証する必要があります。「www.stackoverflow.com」または IP アドレス。「64.34.119.12」。この 2 つの方法を試しましたが、成功しませんでした。ip という名前のプライベート クラス変数があります。
方法 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;
}
この 2 番目の方法も機能しませんが、機能したとしても、Web アドレスを検証することはできません。
では、この両方のケースで文字列を検証できる方法はありますか?
編集:正規表現について読んだ後、私はこの方法も試しました:
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 を返すようです。