使用flutter 正则表达式识别内容中的http地址


在 Flutter 中,你可以使用 Dart 的正则表达式来识别字符串中的 HTTP 地址。你可以通过以下步骤实现这一目标:

  1. 使用 Dart 的 RegExp 类来定义正则表达式。
  2. 使用 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.comhttps://flutter.dev 程序将识别并输出这两个 URL。


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://11000011.com/?id=702

« 上一篇 下一篇 »

我要评论

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

主机推荐

  • 搬瓦工