替换文本框中的特定文本 C#

Posted

技术标签:

【中文标题】替换文本框中的特定文本 C#【英文标题】:Replace specific text in a textbox 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#字符串替换不会修改原字符串,而是保持原字符串不变,并将修改后的字符串作为返回值。 【参考方案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;

【讨论】:

以上是关于替换文本框中的特定文本 C#的主要内容,如果未能解决你的问题,请参考以下文章

将输入文本框中的文本替换为所选自动完成选项中的文本

C#:更改文本框中的数字

C# - 上次编辑的文本框未保存到数据库

如何使用python更改文本框中的特定字母颜色

C#如何从表单中的文本框中获取文本,从不同的类调用

如何将文本框文本拆分为列表框 C#