如何连续 trim 来自文本框的不需要的字母?

How to trim unwanted letters from textbox continuously?

我正在创建一个项目,其中程序从串行端口获取数据并将其显示在文本框中。但是随着数据,一些不需要的字符也通过串行端口输入到文本框中。我尝试通过将其添加到 textchanged 事件中来使用 '.Trim()' 方法 trim 它们。但是我得不到想要的结果。我希望不需要的字母从文本框中连续 trimmed 并且该方法应该在后台保持 运行 。 下面是我试过的代码:

private void textBoxResults_TextChanged(...)
{
  char[] trim= ['a', 'b'];
  textBoxResults.Text.Trim(trim);
}

请注意,这些是多个字母(例如,它们可能是 g、m、a 等) 我希望在接收到串行端口数据时或从串行端口输入后直接从文本框中trim处理所有不需要的数据。

仅根据您提供的信息,我的建议是只使用

textBoxResults.Text = textBoxResults.Text.Replace("<unwanted char>", "")

这会将字符串中任何不需要的字符替换为空字符串,事实上删除它们。 请记住,这需要为每个不需要的字符调用 Replace(...)

不完全是你们所说的,但是在谷歌搜索了一下后分组的东西。

string ToBeReplaceCharacters = @"a;b";
foreach(var RepChar in ToBeReplaceCharacters)
{
  textBox1.Text = textBox1.Text.Replace(RepChar.ToString(), "");
}

Stackloyd 所说的可以替换单个字符,但不能替换多个字符。上面的代码满足了我的需求。

Thank You All!

如果使用正则表达式,则无需遍历每个要消除的字符。

//Reference to RegularExpressions
using System.Text.RegularExpressions;

...
//Code omitted...
...

//Put the code in TextChanged event
private void TextBoxResults_TextChanged(object sender, EventArgs e)
{
    textBoxResults.Text = Regex.Replace(textBoxResults.Text, "[ab]", "");
}

“[ab]”字符串是一个 RegEx 模式... 在此模式中,您可以放置​​要消除的任何字符或字符范围。

简单示例:

  • "[a-zA-Z]" 您将消除任何字母字符
  • "[^bla]" 您将消除任何不等于 'b'、'l' & 'a'.
  • 的字符

这里有一些其他的模式示例:

abc…    Letters

123…    Digits

\d  Any Digit

\D  Any Non-digit character

.   Any Character

\.  Period

[abc]   Only a, b, or c

[^abc]  Not a, b, nor c

[a-z]   Characters a to z

[0-9]   Numbers 0 to 9

\w  Any Alphanumeric character

\W  Any Non-alphanumeric character

\s  Any Whitespace

\S  Any Non-whitespace character

更多信息在这里:

Microsoft Regex.Replace reference