【问题标题】:Replace specific text in a textbox C#替换文本框中的特定文本 C#
【发布时间】:2021-03-26 02:27:25
【问题描述】:

我正在尝试实施一种解决方案,以从文本框中删除 URL 并将其替换为“”

所以是这样的:

“嘿,看看这个网站 http://www.anywhere.com”

会变成:

“嘿,看看这个网站

这是我目前所拥有的,但我认为我做的不正确,任何帮助将不胜感激! :)

private void btnFilter_Click(object sender, RoutedEventArgs e)
{
    if (txtContent.Text.Contains("http:"))
    {
        txtContent.Text.Replace("http", "<URL Quarrantined>");
    }
}

【问题讨论】:

  • 设置修改文本 txtContent.Text = txtContent.Text.Replace("http", "");
  • 与其他一些编程语言相比,C#字符串替换不会修改原字符串,而是保持原字符串不变,并将修改后的字符串作为返回值。

标签: c# .net string wpf replace


【解决方案1】:

当然,您的示例只是替换“http”。如果你想替换整个 URL,你将不得不求助于这样的正则表达式:

Regex regex = new Regex(@"http(s)?://([\w-]+.)+[\w-]+(/[\w- ./?%&=])?");
txtContent.Text = regex.Replace(txtContent.Text, "<URL Quarrantined>");

【讨论】:

  • 这似乎不起作用恐怕文本保持不变。最好实现一个 if 语句,例如: if(regex.Is.Match(txtContent.Text)?
  • 没有。如果没有可替换的内容,则文本仍然保持不变。
  • txtContent 是一个什么样的控件?
  • 对不起,这是一个文本框
  • 我刚刚尝试了一个简单的 WPF 应用程序,它工作得很好。您是否在此 TextBox 中使用 DataBinding?在这种情况下,您可能需要更改 TextBox 的 Text 值绑定到的属性。
【解决方案2】:

找到“http”的索引并创建一个新字符串:

static string Convert(string s)
{
    const string t = "<URL Quarantined>";
    int index = s.LastIndexOf("http");
    if (index != -1)
        return string.Concat(s.AsSpan().Slice(0, s.Length - index + 1), t);

    return s;
}

用法:

string s = Convert("Hey check out this site http://www.anywhere.com");

或者:

txtContent.Text = Convert(txtContent.Text);

.NET Framework Substring 版本分配了一个额外的字符串:

static string Convert(string s)
{
    const string t = "<URL Quarantined>";
    int index = s.LastIndexOf("http");
    if (index != -1)
        return string.Concat(s.Substring(0, s.Length - index + 1), t);

    return s;
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    • 2015-09-22
    • 1970-01-01
    • 2019-03-02
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多