替换字符串的合适方法
本文关键字:方法 字符串 替换 | 更新日期: 2023-09-27 17:51:17
我的输入是abc@xyz.com
我想用mnop.com
代替xyz.com
所以最后的结果是abc@mnop.com
现在的方式
var input = "abc@xyz.com";
var output = input.Split('@')[0] + "@mnop.com";
什么是合适的方式?有正则表达式吗?
用正确的异常句柄替换函数示例
/// <summary>
/// replace email domain
/// </summary>
/// <param name="email"> email </param>
/// <param name="newDomain"> new domain </param>
/// <returns></returns>
private string ReplaceMailDomain(string email, string newDomain)
{
if (email == null) throw new ArgumentNullException("email");
int pos = email.IndexOf('@');
if (pos < 0)
{
throw new ArgumentException("Invalid email", "email");
}
else
{
return email.Substring(0, pos + 1) + newDomain;
}
}
用法:
string email = ReplaceMailDomain("abc@xyz.com", "mnop.com");
如果您事先知道要查找的字符串,则可以简单地使用正常的Replace(string toFind, string replacement)
。您可以使用indexof
和substring
获取域名。
string input = "abc@xyz.com";
string domain = input.Substring(input.IndexOf('@') + 1);
Console.WriteLine(input.Replace(domain, "mnop.com"));
收益率abc@mnop.com
如果您只是想"在@
符号之前取一些东西并附加一些域名",那么可能的方法之一是
var input = "abc@xyz.com";
var output = input.Substring(0, input.IndexOf('@')) + "@mnop.com";
它比使用Split
稍微"轻量级",因为它不创建数组(事实上你不需要数组,因为你只使用它的第一个元素)。
假设地址是有效的,意味着只有一个@字符,您可以使用简单的Replace()
函数
var domain = "xyz.com";
var newdomain = "xyz.com";
var input = "abc@xyz.com";
var output = input.Replace("@" + domain, "@" + newdomain);
regexp对于这个来说是多余的。
如果您想删除任何域名并替换它,然后使用Substring()
和IndexOf()
为该
var output = input.Substring(0, input.IndexOf('@') + 1) + newdomain;
请注意,如果字符串不包含@字符,则会抛出异常。