在 Flutter 中,你可以使用 Dart 的正则表达式来识别字符串中的 HTTP 地址。你可以通过以下步骤实现这一目标:
- 使用 Dart 的 RegExp 类来定义正则表达式。
- 使用 allMatches 或 firstMatch 等方法来查找匹配的 HTTP URL。
示例代码:
dart
import 'package:flutter/material.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: Text('正则表达式识别 HTTP 地址'),
),
body: Center(
child: UrlExtractor(),
),
),
);
}
}
class UrlExtractor extends StatelessWidget {
final String text = "这里有一个链接: http://example.com 和 https://flutter.dev";
@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(16.0),
child: Column(
crossAxisAlignment: CrossAxisAlignment.start,
children: [
Text("原始文本:"),
Text(text),
SizedBox(height: 20),
Text("识别到的 HTTP/HTTPS 地址:"),
for (var url in extractUrls(text)) Text(url),
],
),
);
}
List<String> extractUrls(String input) {
// 定义正则表达式
final RegExp urlPattern = RegExp(
r'(https?:\/\/[^\s]+)',
caseSensitive: false,
);
// 查找所有匹配的URL
final Iterable<RegExpMatch> matches = urlPattern.allMatches(input);
// 提取URL并返回列表
return matches.map((match) => match.group(0)!).toList();
}
}
解释:
RegExp:正则表达式 r'(https?:\/\/[^\s]+)' 用于匹配 http:// 或 https:// 开头的 URL,并捕获直到下一个空格之前的所有字符。
allMatches:查找所有匹配项。
match.group(0):提取每个匹配项中的实际 URL。
输出结果:
给定的输入字符串中包含 http://example.com 和 https://flutter.dev 程序将识别并输出这两个 URL。
我要评论