用字符串中的`-`替换`_`

时间:2014-09-09 05:36:12

标签: c#

在特定情况下,我必须在邮件ID中将_替换为-,尝试使用Index方法但不能获得正确的标识。

以下是实际案例。

Mail id : abc@bc_cd_fd@gmail.com ( It's wrong as per my requiremnt)

我想用以下格式替换它。

Required format :abc@bc-cd-fd@gmail.com

尝试以下格式

 string correctString = errString.Replace("_", "-");

但我必须在@ only之后这样做。

提前感谢您的及时帮助。

2 个答案:

答案 0 :(得分:1)

如果要在“@”符号后面对文本执行替换,首先需要隔离该字符串的那一部分。您可以使用Split方法将字符串拆分为两部分 - 前面的部分和'@'后面的部分以及仅在第二部分上运行替换:

public string FixEmail(String email) {
    var parts = email.Split('@');
    return parts[0] + "@" + parts[1].Replace("_", "-");
}

// ... snip ...

FixEmail("ab-c_d@12_34.com").Dump();

如果您的电子邮件中有多个“@”符号,您可以尝试仅在最后一部分运行替换,并将第一部分连接在一起:

public string FixEmail(String email) {
    var parts = email.Split('@');
    parts[parts.Length - 1] = parts[parts.Length - 1].Replace("_", "-");
    return String.Join("@", parts);
}

答案 1 :(得分:1)

一些索引的linq会让它快速而简单:

var result = string.Join("@", "aaa_a@_a_".Split('@').ToList().
                             Select((s, i) => i > 0 ? s.Replace('_', '-') : s).
                             ToArray());

//returns aaa_a@-a-