【发布时间】:2014-07-21 12:41:31
【问题描述】:
我有一个用 C# 编写的连接到 OpenVMS、运行命令然后返回输出的方法。
它运行的一个 DCL 过程以字符串的形式返回一个“表单”,其中包含各种 ANSI 编码。
我想做的是将返回的字符串拆分为基于 ANSI 转义字符作为分隔符的数组,以便我可以进一步对其进行排序并在以后构建显示。
我遇到的问题是转义字符看起来不像被识别。当我在 Visual Studio 中检查字符串时,我可以看到标准的 ANSI 格式,带有一个指向左的箭头,看起来像这样:每个条目之间的 ←。这是转义字符。
如果我将相同的字符串粘贴到 notepad++ 中,它会显示为 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,所以现在的问题是如何在拆分中使用它?
【问题讨论】:
-
能否提供拆分代码?
-
你能发布你的代码吗?你如何得到这些字符串 - 作为字节数组,作为字符串,或者什么?如果您可以确定问题字符的位置,只需获取其编号,如
Int32 charCode = (Int32)str[problemCharIndex]或在调试期间在 Watch 窗口中执行相同操作(Int32)str[problemCharIndex] -
输出作为字符串从一个名为 SSH.NET 的自定义库中的 Stream reader 返回我将尝试你的代码,看看我是否可以获得该字符代码
-
您也可能有 ansi/Unicode 问题。见here
标签: c# regex split ansi openvms