使用RegExp过滤TextField加载文本特殊格式

本文介绍如何处理TextField在加载外部文本时遇到的换行符及HTML特殊字符问题,通过正则表达式过滤掉多余的 ,并将<>转换为正确的HTML实体。

使用TextField显示在外部加载的文本的时候,会经常发现多了一般的换行(其实这些多余的换行是由于在文本编辑软件中,通常换行是\n\r,而在TextField中会把\n和\r都作为换行)... 还有在使用html文本的时候,一些特殊的字符比如<>会截断一些文本....


///----------------------------------------------------------------------------------
load('t.txt');

var loader:URLLoader;
function load(value) {
 loader = new URLLoader(new URLRequest(value.toString()));
 loader.addEventListener('complete',loaded);
}
function loaded(e) {
 var str:String = loader.data;
//过滤开始
//去掉\r
 var myPattern:RegExp = /\r/g;
 str = str.replace(myPattern, "");
//替换<为<
 myPattern = /</g;
 str = str.replace(myPattern, "<");
//替换>为>
 myPattern = />/g;
 str = str.replace(myPattern, ">");
//过滤结束
 ta.htmlText = str;
}

import 'package:flutter/material.dart'; import 'package:supabase_flutter/supabase_flutter.dart'; import '../../services/supabase_service.dart'; class ResetPasswordPage extends StatefulWidget { const ResetPasswordPage({super.key}); @override _ResetPasswordPageState createState() => _ResetPasswordPageState(); } class _ResetPasswordPageState extends State<ResetPasswordPage> { final _emailController = TextEditingController(); bool _isLoading = false; Future<void> _resetPassword() async { setState(() => _isLoading = true); try { await SupabaseService.resetPassword(_emailController.text.trim()); ScaffoldMessenger.of(context).showSnackBar( const SnackBar(content: Text('重置邮件已发送')), ); if (mounted) Navigator.pop(context); } on AuthException catch (error) { ScaffoldMessenger.of(context).showSnackBar( SnackBar(content: Text(error.message)), ); } finally { setState(() => _isLoading = false); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar(title: const Text('重置密码')), body: Padding( padding: const EdgeInsets.all(16.0), child: Column( children: [ TextField( controller: _emailController, decoration: const InputDecoration(labelText: '注册邮箱'), keyboardType: TextInputType.emailAddress, ), const SizedBox(height: 20), ElevatedButton( onPressed: _isLoading ? null : _resetPassword, child: _isLoading ? const CircularProgressIndicator() : const Text('发送重置邮件'), ), ], ), ), ); } } flutter,密码重置页面无法发送邮件密码重置,写一个新的密码重置页实现功能
11-17
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值