不少软件开发人员会对客户端提交的表单值,进行 Trim()。
我认为需慎重。
一、直接 Trim() 可能引发异常
Request.Form["name"].Trim();
如果不存在 name 这一项,直接调用 Trim(),就会引发异常。
二、为什么干掉两端空白字符,不干掉中间空白字符?
支持 Trim() 者认为这样可以防止用户误输入空白字符,但是为什么仅仅是两端?为什么不干掉中间的空白字符?
三、是干掉空白字符,还是判断空白字符?
还有一个逻辑:我们为什么要主动改变用户的输入值?我们为什么不能用“判断”来代替“直接干掉”?用户的空白字符,真的是无意为之吗?
注:验证码一类的字符我们可以帮助用户干掉空白字符,但是仍然是干掉整个空白字符,而不是两端空白字符。
四、提供两个辅助方法
/// <summary> /// 是否包含空白字符。 /// </summary> /// <param name="str"></param> /// <returns></returns> public static bool ContainsBlank(string str) { if (string.IsNullOrEmpty(str)) { return false; } return Regex.IsMatch(str, @"\s"); } /// <summary> /// 去除空白字符。 /// </summary> /// <param name="str"></param> /// <returns></returns> public static string RemoveBlanks(string str) { if (string.IsNullOrEmpty(str)) { return str; } // Regex.Replace 第一个参数不能为 null。 return Regex.Replace(str, @"\s", ""); }