从字符串中删除未知字符

时间:2014-03-23 17:39:52

标签: c# string visual-studio-2012 textbox serial-port

我正在编写一个程序问题。我可以使用常规ASCII通过SerialPort传递命令,格式为:"< ID01>< PA>这是一个测试"。并将回车符和换行符附加到C#形式的字符串末尾:

string cmd = string.Format("{0}\r\n", command);

这很好用,它产生了预期的效果,我遇到的问题是连接到SerialPort的设备的返回响应。它应该返回一个类似于我发送给它的字符串的简单字符串响应。

<ID01>S

这是成功接收命令的响应,我正在尝试将其显示在表单上的文本框中,因此用户知道每件事情都很顺利。

但是当我尝试显示字符串时,它会在字符串的前面和后面添加一个字符,我不知道如何剥离字符串,这些不是常规字符串字符,如果我的图像上传到此消息右侧,您将在Text Visualizer Value Box中看到我正在谈论的字符。他们看起来就像在线的开头一个双引号!!然后在最后一个填充块三角形&lt;

Visual Studio Text Visualizer

有谁知道如何从我的字符串中删除这些字符以发送到我的文本框?出于好奇,任何人都可以告诉我这些角色是什么?

感谢您的回复 路线大师

2 个答案:

答案 0 :(得分:3)

我猜你的设备会返回一些ascii控制字符。您可以使用正则表达式删除它们:

output = Regex.Replace(output, @"[^\u0020-\u007F]", String.Empty);

答案 1 :(得分:0)

尝试子串方法:

public static string TrimFirstAndLastCharacter(string input) { // Input is "!<ID01>S"

  string output = input.Substring(1, input.length - 2);

  return output;

}