在特定情况下,我必须在邮件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之后这样做。
提前感谢您的及时帮助。
答案 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-