我有以下代码将从文本字符串中提取电子邮件地址,该字符串将被数据库字段中的文本替换。
该字符串将包含一个电子邮件地址。我已将电子邮件地址拆分如下:
我已经包含了可以将所有字符替换为***************(完整电子邮件)或单个部分的代码。
当我完成所需的工作时,再次合并文本会很容易。
我想要得到的结果:
te ** @ ******** za
考虑隐藏第一部分中的所有内容,除了前两个字符,最后一部分,除了最后两个字符之外的所有内容。
Dim newText As string = ""
Dim senText As String = "This is a long string that we will try test@test.co.za to extract the email address from, it might exist anywhere in this string."
Dim emailRegEx As New Regex("(\S+)@([^\.\s]+)(?:\.([^\.\s]+))+")
Dim m As Match = emailRegEx.Match(senText)
If m.Success Then
newText = m.ToString
End If
Dim mystr As String = newText
Dim cut_at As String = "@"
Dim x As Integer = InStr(mystr, cut_at)
Dim string_before As String = mystr.Substring(0, x - 1)
Dim string_after As String = mystr.Substring(x + cut_at.Length - 1)
Dim myString As String = New String("*"c, newText.Length)
Dim PrivateMail As String = ""
response.write(newText)
response.write(myString)
response.write(string_before)
response.write(string_after)
非常感谢任何帮助。
答案 0 :(得分:4)
也许试试这个:
Dim email = "test@test.co.za"
Dim obsfucated = _
String.Join("@", email.Split("@"c).Select(Function(x, n) _
If(n = 0, _
x.Substring(0, System.Math.Min(2, x.Length)).PadRight(x.Length, "*"c), _
x.Substring(x.Length - 2, 2).PadLeft(x.Length, "*"c))))
Console.WriteLine(obsfucated)
它给出:te**@********za
答案 1 :(得分:0)
在当前电子邮件用户子字符串中设置带有嵌套子字符串的模式。将****过滤器仅应用于子字符串的嵌套部分。
Dim emailRegEx As New Regex("(\S{1,2}(\S*))@([^\.\s]+)(?:\.([^\.\s]+))+")
有关正则表达式中嵌套的子串的详细信息,请参阅Here