1

我有一个用 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,所以现在的问题是如何在拆分中使用它?

4

1 回答 1

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符号,在此处查看转义字符的完整列表。ESCRegexRegex

于 2014-07-21T12:52:40.943 回答