我们系统里面有个业务单号是手工输入的,代码里面只做了简单的 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
本站资料均由网友自行发布提供,仅用于学习交流。如有版权问题,请与我联系,QQ:4156828
© CopyRight 2008-2024 All Rights Reserved. Powered By bs178.com 闽ICP备11008920号-3
闽公网安备35020302034844号