如何在电子邮件地址的句点后分割前两个字符,然后是后两个字符(test.mail@test.com=tema)

时间:2014-10-24 16:16:53

标签: c# regex

我有一个如下所示的电子邮件ID

string email=test.mail@test.com;
string myText = email.split("."); 

我不确定是谁拆分了前两个字符,然后在句点或点后跟两个字符。

myText = tema //(desired output)

4 个答案:

答案 0 :(得分:3)

使用LINQ;)

string myText = string.Join("", email.Remove(email.IndexOf('@')).Split('.')
                                .Select(r =>new String(r.Take(2).ToArray())));
  • 首先删除@(包括@
  • 之后的文字
  • 然后分成.
  • 从返回的数组中取每个元素的前两个字符并将其转换为数组
  • 将字符数组传递给String构造函数,创建字符串
  • 使用String.Join组合返回的字符串元素。

答案 1 :(得分:2)

另一个Linq解决方案:

string first = new string(email.Take(2).ToArray());
string second = new string(email.SkipWhile(c => c != '.').Skip(1).Take(2).ToArray());
string res = first + second;

答案 2 :(得分:1)

string.Join(string.Empty, email.Substring(0, email.IndexOf("@")).Split('.').Select(x => x.Substring(0, 2)));

答案 3 :(得分:1)

这里有很多创意答案,但最重要的一点是Split()是这项工作的错误工具。使用Replace()

更容易
myText = Regex.Replace(email, @"^(\w{2})[^.]*\.(\w{2})[^.]*@.+$", "$1$2");

请注意,我在这里做了很多简化假设。最重要的是,我假设原始字符串包含电子邮件地址而没有其他内容(您没有搜索它),字符串格式正确(您没有尝试验证它),并且这两个子字符串都是您的对从至少两个单词字符开始感兴趣。