如何使用方法替换特定字符串?

我的代码有问题,我想将特定字符串替换为新字符串,但它不起作用


public void InsertYahoo(TextBox sender)

{

    if (IsGmail(sender))

    {

        ReplaceGmail(sender);

    }

    else if(IsYahoo(sender))

    {

        return;

    }

    else

    {

        sender.Text +="@yahoo.com";

    }

}


public bool IsYahoo(TextBox sender)

{

    if (sender.Text.Contains("@yahoo.com")

    {

        return true;

    }

    else

    { 

        return false;

    }

}


public bool IsGmail(TextBox sender)

    if (sender.Text.Contains("@gmail.com") 

    {

        return true;

    }

    else

    { 

        return false;

    }

}


public void ReplaceGmail(TextBox sender)

{

    sender.Text.Replace("@gmail.com, "@yahoo.com");

}

这段代码是我尝试过的,所以有什么建议吗?我还尝试获取 @gmail.com 的索引并将其删除,但它也不起作用


HUX布斯
浏览 123回答 2
2回答

慕丝7291255

字符串是不可变的,因此String类中的每个方法都不会修改当前实例,而是返回一个新实例。您必须将其分配给原始变量:sender.Text = sender.Text.Replace("@gmail.com,"@yahoo.com");

拉莫斯之舞

像这样的东西://DONE: we should check for null//DONE: it's Yahoo if it ends on @yahoo.com (not contains)public static bool IsYahoo(TextBox sender) =>  sender != null &&   sender.Text.TrimEnd().EndsWith("@yahoo.com", StringComparison.OrdinalIgnoreCase);public static bool IsGmail(TextBox sender) =>  sender != null &&   sender.Text.TrimEnd().EndsWith("@gmail.com", StringComparison.OrdinalIgnoreCase);public static void InsertYahoo(TextBox sender) {  if (null == sender)    throw new ArgumentNullException(nameof(sender));  if (IsYahoo(sender))    return;  // Uncomment, In case you want to change gmail only  //if (!IsGmail(sender))   //  return;  // If we have an eMail like bla-bla-bla@somewhere  int p = sender.Text.LastIndexOf('@');  // ... we change somewhere to yahoo.com  if (p > 0)    sender.Text = sender.Text.Substring(0, p) + "@yahoo.com";} 
打开App,查看更多内容
随时随地看视频慕课网APP