替换字符串的合适方法

本文关键字:方法 字符串 替换 | 更新日期: 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)。您可以使用indexofsubstring获取域名。

        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;

请注意,如果字符串不包含@字符,则会抛出异常。