关于“支票用途,汇款备注(附言)”界面录入要素的检验问题

studying_ 2010-03-12 03:25:11
业务需求书上要求:用途,备注(附言)栏输入的字符,系统要控制非法字符。包括但不限于符合GB2132编码规定;对X字符集的“℅、:、”等字符进行录入控制,
若录入非法字符时显示提示。我的理解是:支票用途,汇款备注(附言)输入栏,可以输入 ! % 《》 { } ( ); ^_^ 当然中文和英文是可以的啦。
我的实现代码如下 ,但不能完全实现这个功能,请各位牛人来协助解决。

private bool submitValidate()
{
//校验用途是否符合G字符集
if (!ClientValidationHelper.GB2312CharSetCheck(this.bos_ct_purpose.Text))
{
MessageInfoHelper.Instance.ShowMessage("用途输入格式非法!不允许X字符集的“%、:、”等字符");
return false;
}
if (!this.Validate(this.data))
{
return false;
}
if (this.bos_ct_purpose.GetValue().ToString() == "")
{
MessageInfoHelper.Instance.ShowErrorMessage("请输入业务要素!");
return false;
}
return true;
}

/// 检查数据是否符合GB2312标准
/// <param name="gb2312String"></param>

public static bool GB2312CharSetCheck(string gb2312String)
{
if (gb2312String == null)
return false;
gb2312String = gb2312String.Trim();
byte[] bytes = Encoding.GetEncoding("GB2312").GetBytes(gb2312String);
return GB2312CharSetCheck(bytes);
}

/// 检查数据是否符合GB2312标准
/// <param name="gb2312bytes"></param>
public static bool GB2312CharSetCheck(byte[] gb2312bytes)
{
if (null == gb2312bytes)
return false;

for (int i = 0; i < gb2312bytes.Length - 1; i++)
{
int current = Convert.ToInt32(gb2312bytes[i]);
int next = Convert.ToInt32(gb2312bytes[i + 1]);

if ((current >= 0x81) && (current <= 0xFE) && (next >= 0x40)
&& (current != 0x7F) && (current != 0x7B) && (current != 0x7D) && (next <= 0xFE))
{
continue;
}
else
return false;
}

return true;
}
...全文
263 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-03-26
  • 打赏
  • 举报
回复
正则表达式判断[^&\$]
studying_ 2010-03-26
  • 打赏
  • 举报
回复
继续顶起来。
studying_ 2010-03-19
  • 打赏
  • 举报
回复
还没有解决,为自己雄起!!
studying_ 2010-03-16
  • 打赏
  • 举报
回复
还没有解决,为自己雄起!!
段传涛 2010-03-13
  • 打赏
  • 举报
回复
cs 窗体,也只能选择 正则了。
用代码写太浪费资源了,而且不够严谨
studying_ 2010-03-13
  • 打赏
  • 举报
回复
又在submitValidate() 方法里,加了如下代码,还是不能实现。
//校验用途是否符合G字符集
if (!BOS.Common.Client._Pub.ClientValidationHelper.XCharsetStringCheck(this.bos_ct_purpose.Text))
{
if (this.bos_ct_purpose.Text.Equals("%") || this.bos_ct_purpose.Text.Equals(":") || this.bos_ct_purpose.Text.Equals("'") || this.bos_ct_purpose.Text.Equals("\"") || this.bos_ct_purpose.Text.Equals("!"))
{
MessageInfoHelper.Instance.ShowErrorMessage("录入非法字符:" + this.bos_ct_purpose.Text);
return false;
}
}


/// 检查数据是否符合X字符集标准
public static bool XCharsetStringCheck(string xcharString)
{
if (xcharString == null)
return false;
char[] xcharArr = xcharString.ToCharArray();
string xcharset = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,-_()/=+?!&*;@# ";
foreach (char xchar in xcharArr)
{
if (!xcharset.Contains(xchar.ToString()))
return false;
}
return true;
}
studying_ 2010-03-12
  • 打赏
  • 举报
回复
更正一下:
汇款备注(附言)输入栏,可以输入 ! % 《》 { } ( ); ^_^
修改为:
不可以输入 ! % 《》 { } ( ); ^_^
xxoo2007 2010-03-12
  • 打赏
  • 举报
回复
还好我们还有正则这个强大的工具。
jinxuliang 2010-03-12
  • 打赏
  • 举报
回复
我的哥,人民的创造力是无限的
屏蔽这个东西难整啊,不停的同敌人作斗争
金卡免费支票打印软件是一款专业的快递单打印功能。软件不仅可以实现快递单打印,还能提供包括银行支票、银行进账单、结算业务申请书、业务委托书、电汇凭证、承兑汇票、托收凭证、现金存款单、贷记凭证、付款凭证、同城业务支付凭证、现金缴款单等票据的打印。软件界面美观简洁、简单全面、实用方便,无需培训,即可快速上手,轻轻松松完成日常票据打印功能,真正做到简单全面实用。是用户实现票据打印功能的好帮手。 金卡免费支票打印软件特点 一、是目前操作最简单,维护量最小的票据打印软件 本软件没有复杂的使用界面和繁琐的设置,在专用模板设计完毕后,没有其他数据维护工作,所有数据系统智能分析处理,软件学习成本及维护成本极低。 二、智能关联,自动携带 票据录入完毕后,系统智能关联相关数据,下次录入时关联数据会自动携带到票据中,越使用越方便。 三、首字母查询和模糊查询,即录即查 1.首字母查询和模糊查询功能是目前最快的查询方式;录入数据时,可以利用此功能快速从数据库中查找调出历史数据,极大提高了录入速度。 2.录入和查询有机一体,即录即查,想不快都不行。 四、提供外部数据导入功能。 金卡支票打印软件 v1.9.0616 更新日志 新增加模板,,优化功能 金卡免费支票打印截图

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧