常规Exp而不是字符串拆分

时间:2009-02-06 09:38:01

标签: c#

我在其中一个问题前两天进行了考试,用新名字取代@之前的字母

所以在考试卷中我们有array =“toto@yahoo.com”,“mimi @yahoo.com”.soso @ yahoo.com“ 所以我们sholud拿toto mimi soso并用不同的名字替换它们我所做的就是拆分字符串并取前四个字母并感谢上帝我得到了标记。

我在想如果@的字母数量没有固定的话 我还能做什么其他方式? Reg Exp或者有不同的方式。

6 个答案:

答案 0 :(得分:5)

您可以使用RegEx,也可以根据Substring,IndexOf和concatenation进行字符串操作。

答案 1 :(得分:1)

使用Regex,您可以搜索[a-zA-Z] * @等字符串,并将其替换为您想要的任何内容。

答案 2 :(得分:1)

我使用Treb,不要使用RegEx来解析电子邮件地址!

“@”的左侧可能存在合法字符的末尾,特别是左侧实际上可以是带引号的字符串,它本身可以包含“@”,即:

"Some odd e-m@il address!"@example.com

参见RFC 5322的第3.4.1节。

因此,字符串拆分应基于最右侧“@”符号完成,因为它肯定不会出现在地址的域部分中。

答案 3 :(得分:0)

是的,我是用正则表达式做的。

沿着split,substring,indexof这一行的简单匹配技术往往很快但是 - 正如你所发现的那样 - 不灵活,并且正如在事物计划中那样,正则表达式真的很快 。除非操作是长循环(因此会放大性能成本),否则我通常会建议未来的灵活性和意图的清晰度值得使用正则表达式。

答案 4 :(得分:0)

正则表达式可行,但只需获取@ IndexOf的@位置并使用Brian Rasmussen提议的Substring提取地址部分就更简单了。如果有疑问,请更简单(换句话说:KISS principle适用)。

答案 5 :(得分:-1)

这可能有所帮助:

// I want to replace soso with tania
string result = Regex.Replace("soso@yahoo.com", "([a-zA-Z0-9._]*)([@][a-zA-Z0-9._]*)", "tania$2");