2013-05-02 78 views
0

我有一个使用剪贴板的应用程序。用户从Excel中复制数据并将其粘贴到我的应用程序中。以十六进制表示形式打印字符串或将文字控制字符打印为文字

但是,有时我的应用程序无法正确处理数据(在生产中)。但我无法重现这个问题。因为电子表格用户正在使用包含他自己的宏,并且我不允许拥有他的原始电子表格,所以我想添加代码将剪贴板中的文本完全转储到日志文件中,以便我可以查看是否粘贴了数据格式正确。

我特别关心剪贴板中包含的控制字符。因此我想将字符串转储为文字。例如,如果剪贴板中的字符串包含'\t',我想在日志文件中看到"\t",而不是标签。有没有办法做到这一点?

或者我可以用十六进制格式记录文本。但似乎我需要首先将string转换为char[]并使用System.Buffer.BlockCopychar[]复制到byte[]。然后使用BitConverter.ToString()打印字节[]。它工作正常。但是有没有更好的方法(更简单,不需要复制,也不需要遍历每个字符)来执行此操作? .Net没有内置函数?

我用这个作为参考:byte[] to hex string

方法建议有看起来有点“重”。

+0

嗯,你可以做一个“查找和替换”与控制字符 - 简单地寻找他们的字符串,并与一些适合你的目的替换它们。 – 2013-05-02 07:34:19

回答

1

简单试试这个

"some text \t some text".Replace("\t",@"\t"); 
+0

感谢Civa和Christian Sauer。我不喜欢这样做的原因是我不知道是否所有的控制字符(或所有不可见的字符)都可以用一个符号表示。我不想手动枚举每个控制字符,并手动替换它们。我在寻找的是:如果mystring包含'\ something',我用@“\ something”替换它。可能吗? – Xinchao 2013-05-02 09:32:17

+0

您可以参考控制字符http://en.wikipedia.org/wiki/C0_and_C1_control_codes – Civa 2013-05-02 13:11:22

相关问题