当前位置:编程学习 > C#/ASP.NET >>

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

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

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

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

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

之前有大致看了 .net 4.0 的MVC3 实体的验证 好像 验证的正则 就是写在 属性上面 --------------------编程问答-------------------- 把文本值存入数据库时一般都要加上Trim(),这是必须的。有些操作则不必加Trim(),比如int.Parse(str.Trim())就是多余的,因为Parse方法内部已经做了处理了。 --------------------编程问答--------------------
引用 1 楼  的回复:
把文本值存入数据库时一般都要加上Trim(),这是必须的。有些操作则不必加Trim(),比如int.Parse(str.Trim())就是多余的,因为Parse方法内部已经做了处理了。

我知道要 trim 不过 某些实体有N个属性 就要写N次 trim 不是很麻烦?
所以在找 只写一次的 方法 --------------------编程问答-------------------- trim()作用去掉字符串前后空格, 对于“用户常常是查询的一些数据带空格 而不能出结果”
加在查询时,把文本框的值trim就能解决问题。为什么要在实体有N个属性 就要写N次 trim ? --------------------编程问答--------------------
引用 3 楼  的回复:
trim()作用去掉字符串前后空格, 对于“用户常常是查询的一些数据带空格 而不能出结果”
加在查询时,把文本框的值trim就能解决问题。为什么要在实体有N个属性 就要写N次 trim ?

我要查询的 N个条件 当然要 trim N次了 还有
我有 N个对象 对应 N个表, 不是每个表的每次查询方法都要trim? --------------------编程问答-------------------- 或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作) --------------------编程问答-------------------- 就像 MVC 里面有个 ModelBinder 的东东 --------------------编程问答--------------------
引用 5 楼  的回复:
或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作)

可用get set 实体的属性,在get时候,加逻辑 如敏感词和谐,时间类型格式化操作等等

   public string Value_txtDispositionCode
    {
        set
        {
            this.txtDispositionCode.Text = value;
        }
        get
        { 
            //加逻辑
            return  doXXX(this.txtDispositionCode.Text);
            
        }
    }
--------------------编程问答--------------------
引用 7 楼  的回复:
引用 5 楼  的回复:
或者 换一个问法。 我想我的实体 在某一次方法操作的时候 对string 类型的属性进行自定义的处理。
比如 trim()、replace() 乃至 各种自定义的过滤内容 如何实现呢?
打个比方:
Model - Bll(进行string 的敏感词和谐) - Dal(进行string 的 trim() 乃至其他操作)

可用get set 实体的属性,在ge……

恩,这个 只是简单的处理方法。
那有没想过,每次get set 都要做这些方法? 不是很浪费资源 影响速度? 
我只需要在某些特定的情况处理这些属性(方法) 并不是所有的。 --------------------编程问答-------------------- 1.职责被这样安排:谁接受,谁处理,比如:
void function(string p1){
    p1=MyHelper.ToString(p1);
    MyHelper.Assert(p1!=String.Empty,new ArgumentException("ErrMsg"));
    }

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

3.在MVC设计模式下,
  控制器会自动去历遍Model的参数,自动格式化参数和验证参数,根本就不需要些什么代码 --------------------编程问答--------------------
引用 9 楼  的回复:
1.职责被这样安排:谁接受,谁处理,比如:
void function(string p1){
    p1=MyHelper.ToString(p1);
    MyHelper.Assert(p1!=String.Empty,new ArgumentException("ErrMsg"));
    }

2.现在流行这样的设计:
  把所有的数据库的表结构,统统在程序中再重复……

明白人呀……。 兄弟有没什么解决方案吗?对于不用MVC 的情况? --------------------编程问答-------------------- 写个StringEx就行了嘛

补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,