首页 > 解决方案 > 如何将中间字符串替换为 Dart 中的其他字符?

问题描述

final email = 'abcdefghij@email.com';
final phoneNumber = '0123456789';
 

此电子邮件字符串转换为此模式,如
Fox Example

电子邮件 -> ab****j@email.com 电话号码
-> (012)3****89

请帮助使用RegExp,欢迎使用 0ther 技术。

标签: stringflutterdart

解决方案


您可以使用replaceRange方法

final email = 'abcdefghij@email.com';
final phoneNumber = '0123456789';

final hiderPlaceholder = "****";

final censuredEmail = email.replaceRange(2, email.indexOf("@")-1, hiderPlaceholder);
  
final censuredPhoneNumber = "(" + phoneNumber.substring(0, 3) + ")" + phoneNumber.substring(3).replaceRange(1, phoneNumber.substring(3).length-2, hiderPlaceholder);
  
print (censuredEmail);
print (censuredPhoneNumber);

带有 replaceRange 的代码

或者你可以选择常青子串

final email = 'abcdefghij@email.com';
final phoneNumber = '0123456789';

final hiderPlaceholder = "****";

final censuredEmail = email.substring(0, 2) + hiderPlaceholder + email.substring(email.indexOf("@")-1);

final censuredPhoneNumber = "(" + phoneNumber.substring(0, 3) + ")" + phoneNumber.substring(3, 4) + hiderPlaceholder + phoneNumber.substring(phoneNumber.length-2);

print (censuredEmail);
print (censuredPhoneNumber);

被指责的电话和被指责的电话号码

Ps 显然,添加您想要的所有控件,例如电子邮件/电话号码的长度


推荐阅读