C#过滤控制、不可见字符公共方法

我们系统里面有个业务单号是手工输入的,代码里面只做了简单的 Trim()去掉前后的空格,谁知道客户不知道从哪复制的数据后面带了一个换行符,导致在系统列表里面单元格没有数据(被换行顶上去了看不见单号),客户说单号怎么是空的,我们在数据库里面按单号查询也查不到数据。最后在软件列表里面过滤才发现有个单号是换行的,最后在网上看到了一篇文章。不知道大家在开发过程中处理用户输入时都做了什么处理呢,都遇到过什么坑?


从设备采集到信息,有时候结尾会带些特殊字符,经常还是不可见字符,不过复制到Notepad++,会显示(SOH)(DLE)(EOT)等,查询后才知道这些是ASCII中的控制字符。

控制字符(Control Character),出现于特定的信息文本中,表示某一控制功能的字符。

 在ASCII码中,第0 31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。

SOH是start of heading的缩写:





///

/// 过滤不可见字符

///

/// 原始字符

/// 删除后结果

public string DeleteControlChar(string sourceString)

{

System.Text.StringBuilder sBuilder = new System.Text.StringBuilder();

for (int i = 0; i < sourceString.Length; i++)

{

int Unicode = sourceString[i];

if (Unicode > 31 && Unicode != 127)

{

sBuilder.Append(sourceString[i].ToString());

}

}

return sBuilder.ToString();

}

展开阅读全文

页面更新:2024-04-25

标签:字符   振铃   单号   缩写   客户   通讯   方法   数据   列表   系统   信息

1 2 3 4 5

上滑加载更多 ↓
推荐阅读:
友情链接:
更多:

本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828  

© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号

Top