如何拆分C#中从OpenVMS返回的未知字符的ANSI字符串

时间:2014-07-21 12:41:32

标签: c# regex split ansi openvms

我有一个用C#编写的方法连接到OpenVMS,运行命令然后返回输出。

它运行的一个DCL程序返回一个"形式"以字符串的形式,其中包含各种ANSI编码。

我希望做的是将返回的字符串拆分为基于ANSI转义字符作为分隔符的数组,以便我可以进一步对其进行排序并在以后构建显示。

我遇到的问题是逃避角色看起来不像被识别。当我在visual studio中检查字符串时,我可以看到标准的ANSI格式,左边的箭头如下所示:←每个条目之间的←。这是转义字符。

如果我将相同的字符串粘贴到记事本++中,它会显示为ESC。

我尝试对字符串进行拆分,\ 033是分隔符,但是没有用,我还尝试将ESC字符粘贴到变量中,但它只是粘贴了一个空的空间。

所以我想知道如何找出这个转义字符使用的字符代码,以便我可以在我的分割中使用它。

我发布了截图,但我没有让代表显然做到这一点。

编辑:这是什么回复:

[02;27HDIVIDEND SETUP       11:25   Mon, 21 Jul 2014[04;05HCurrent attach point : VOD_TIM[07;05H   Code     Description[07;60HDate       Run

它没有显示为StackOverflow上的一个字符,但是如果你想象这个字符位于以[

开头]开头的每个片段的前面

编辑2:好的,我们已经确定int char代码是27所以现在的问题是如何在我的分裂中使用它?

1 个答案:

答案 0 :(得分:0)

您可以尝试通过Regex分割字符串,如下所示:

string input = YOUR_STRING_HERE;
string pattern = @"\033";

string[] substrings = Regex.Split(input, pattern);
foreach (string match in substrings)
{
   Console.WriteLine("'{0}'", match);
}

<强>更新

您可以在.Net中\e的{​​{1}}字符中使用ESC符号,请参阅Regex here中的转义字符的完整列表。