我们系统里面有个业务单号是手工输入的,代码里面只做了简单的Trim()去掉前后的空格,谁知道客户不知道从哪复制的数据后面带了一个换行符,导致在系统列表里面单元格没有数据(被换行顶上去了看不见单号),客户说单号怎么是空的,我们在数据库里面按单号查询也查不到数据。最后在软件列表里面过滤才发现有个单号是换行的,最后在网上看到了一篇文章。不知道大家在开发过程中处理用户输入时都做了什么处理呢,都遇到过什么坑? 从设备采集到信息,有时候结尾会带些特殊字符,经常还是不可见字符,不过复制到Notepad,会显示(SOH)(DLE)(EOT)等,查询后才知道这些是ASCII中的控制字符。 控制字符(ControlCharacter),出现于特定的信息文本中,表示某一控制功能的字符。 在ASCII码中,第0~31号及第127号(共33个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等。 SOH是startofheading的缩写: 过滤不可见字符 summary 原始字符param 删除后结果 publicstringDeleteControlChar(stringsourceString) { System。Text。StringBuildersBuildernewSystem。Text。StringBuilder(); for(inti0;isourceString。Li) { intUnicodesourceString〔i〕; if(Unicode31Unicode!127) { sBuilder。Append(sourceString〔i〕。ToString()); } } returnsBuilder。ToString(); }