替换文本框中的特定文本 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", "当然,您的示例只是替换“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#的主要内容,如果未能解决你的问题,请参考以下文章