gpt4 book ai didi

java - 我正在尝试使用 JAVA 从字符串中获取 URL

转载 作者:行者123 更新时间:2023-12-02 10:35:05 24 4
gpt4 key购买 nike

我正在尝试使用 JAVA 从字符串中获取 URL。但我的变量在“Uri.parse”部分中不起作用(变量中没有值)。请考虑我是编码初学者

错误是:“无法为最终变量“结果”赋值”

我的代码:

showResultDialogue(result.getContents());

..

public void showResultDialogue(final String result) {

AlertDialog.Builder builder;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);
} else {
builder = new AlertDialog.Builder(this);
}


Pattern p = Pattern.compile("[\\w\\.]+\\.(?:com|cc|net|ru|in)[^,\\s]*");
Matcher m = p.matcher(result);


builder.setTitle("Example Title")
.setMessage("Text is " + result);


if(m.matches()) {
builder.setPositiveButton("Go", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent browserIntent = new Intent(
Intent.ACTION_VIEW,
Uri.parse(result) // here is problem
);
startActivity(browserIntent);
}
});
}

最佳答案

由于您没有提供为什么它不起作用的信息,我只是假设 URL 缺少 http 因为您的正则表达式与它不匹配,在这种情况下我会这样做这个

编辑:你真的需要你的正则表达式吗? Android 有一种内置的匹配 URL 的方法。

您可以在此处找到文档 https://developer.android.com/reference/android/util/Patterns

Patterns.WEB_URL.matcher(结果).matches();

所以你的代码看起来像这样

if (Patterns.WEB_URL.matcher(result).matches()) {
builder.setPositiveButton("Go", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
Intent browserIntent = new Intent(
Intent.ACTION_VIEW,
Uri.parse(!result.startsWith("http://") && !result.startsWith("https://") ? "http://" + result : result)
);
startActivity(browserIntent);
}
});
}

关于java - 我正在尝试使用 JAVA 从字符串中获取 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53352341/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com