有没有必要对表单提交值进行 Trim()?

作者:vkvi 来源:ITPOW(原创) 日期:2021-12-16

不少软件开发人员会对客户端提交的表单值,进行 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", "");
}


相关文章