将字符串中的“_”替换为“-”

本文关键字:替换 字符串 | 更新日期: 2023-09-27 18:21:20

在特定情况下,我必须将邮件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("_", "-");

但我必须在@之后才这么做。

提前感谢您的及时帮助。

将字符串中的“_”替换为“-”

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

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);
}

一些索引linq将使其快速而简单:

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