string 的 trim() 以及一些困扰我很久的问题了

ajing00 2012-10-12 04:31:18
由于没有对 string 进数据库 trim()的习惯,用户常常是查询的一些数据带空格 而不能出结果。
今天又被同事 “教导”说习惯不好。 好吧, 他确实 对每个字符串变量,实体属性 都进行了 trim操作,好吧,你赢了。
不过,不够懒的程序员,不是好程序员。
第一个想法:能不能把所有string 进行trim 操作?
结果:考虑欠妥,而且要修改系统基础类,可能会导致一些隐患。放弃

第二个想法:能不能对某个 命名空间下的类的 所有string 进行trim呢,比如我们常用的 对象实体类?
目前能想到的就是 需要所有实体类 去继承某个基类,或许可以实习,但是那么多个 实体,会改死爹的…… 暂时搁置

第三个想法:在某个需要 trim 的层,比如我们操作数据库的 DAL 里面 所有的方法参数进行 trim呢? 这个MS 要建立在 第二个想法之后。

延伸的一些联想
我们常用到的类的序列化 [Serializable] 这个东东,好像叫声明 还是什么的忘记了, 这个东西 如果有需要自定义,如何自定义。 比如 我自定义一个 [Psy] 声明 然后所有有这个特性的 类 在执行某个方法,或者某个属性赋值的时候做 某些事情

之前有大致看了 .net 4.0 的MVC3 实体的验证 好像 验证的正则 就是写在 属性上面
...全文
608 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
SocketUpEx 2012-10-15
  • 打赏
  • 举报
回复
写个StringEx就行了嘛

ajing00 2012-10-15
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 的回复:]

1.职责被这样安排:谁接受,谁处理,比如:
void function(string p1){
p1=MyHelper.ToString(p1);
MyHelper.Assert(p1!=String.Empty,new ArgumentException("ErrMsg"));
}

2.现在流行这样的设计:
把所有的数据库的表结构,统统在程序中再重复……
[/Quote]
明白人呀……。 兄弟有没什么解决方案吗?对于不用MVC 的情况?
缪军 2012-10-12
  • 打赏
  • 举报
回复
1.职责被这样安排:谁接受,谁处理,比如:
void function(string p1){
p1=MyHelper.ToString(p1);
MyHelper.Assert(p1!=String.Empty,new ArgumentException("ErrMsg"));
}

2.现在流行这样的设计:
把所有的数据库的表结构,统统在程序中再重复写一遍,美其名曰:实体,
这样的话,如果有500个实体,每个实体20个属性,(实际项目远远超过这个数目)
那么,由此带来的项目中发散的巨量的重复劳动是不可避免的

3.在MVC设计模式下,
控制器会自动去历遍Model的参数,自动格式化参数和验证参数,根本就不需要些什么代码
ajing00 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 的回复:]

引用 5 楼 的回复:
或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作)

可用get set 实体的属性,在ge……
[/Quote]
恩,这个 只是简单的处理方法。
那有没想过,每次get set 都要做这些方法? 不是很浪费资源 影响速度?
我只需要在某些特定的情况处理这些属性(方法) 并不是所有的。
遊戲王千金 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 的回复:]
或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作)
[/Quote]
可用get set 实体的属性,在get时候,加逻辑 如敏感词和谐,时间类型格式化操作等等

public string Value_txtDispositionCode
{
set
{
this.txtDispositionCode.Text = value;
}
get
{
//加逻辑
return doXXX(this.txtDispositionCode.Text);

}
}
ajing00 2012-10-12
  • 打赏
  • 举报
回复
就像 MVC 里面有个 ModelBinder 的东东
ajing00 2012-10-12
  • 打赏
  • 举报
回复
或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作)
ajing00 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

trim()作用去掉字符串前后空格, 对于“用户常常是查询的一些数据带空格 而不能出结果”
加在查询时,把文本框的值trim就能解决问题。为什么要在实体有N个属性 就要写N次 trim ?
[/Quote]
我要查询的 N个条件 当然要 trim N次了 还有
我有 N个对象 对应 N个表, 不是每个表的每次查询方法都要trim?
遊戲王千金 2012-10-12
  • 打赏
  • 举报
回复
trim()作用去掉字符串前后空格, 对于“用户常常是查询的一些数据带空格 而不能出结果”
加在查询时,把文本框的值trim就能解决问题。为什么要在实体有N个属性 就要写N次 trim ?
ajing00 2012-10-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

把文本值存入数据库时一般都要加上Trim(),这是必须的。有些操作则不必加Trim(),比如int.Parse(str.Trim())就是多余的,因为Parse方法内部已经做了处理了。
[/Quote]
我知道要 trim 不过 某些实体有N个属性 就要写N次 trim 不是很麻烦?
所以在找 只写一次的 方法
dalmeeme 2012-10-12
  • 打赏
  • 举报
回复
把文本值存入数据库时一般都要加上Trim(),这是必须的。有些操作则不必加Trim(),比如int.Parse(str.Trim())就是多余的,因为Parse方法内部已经做了处理了。

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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