/// <summary>/// TypeTrimHelper/// </summary>public static class TypeTrimHelper{/// <summary>/// 类型字典/// </summary>public static ConcurrentDictionary<Type, PropertyInfo[]> TypeDictionary= new ConcurrentDictionary<Type, PropertyInfo[]>();/// <summary>/// 获取Type属性/// </summary>/// <param name="type"></param>/// <returns></returns>public static PropertyInfo[] GetTypeProperties(Type type){PropertyInfo[] typeProperties = null;if (TypeDictionary.ContainsKey(type)){typeProperties = TypeDictionary[type];}else{typeProperties = type.GetProperties();TypeDictionary[type] = typeProperties;}return typeProperties;}private static bool HasNotAutoTrimSpacesAttribute(Type type){return type.GetCustomAttribute<NotAutoTrimSpacesAttribute>()!= null;}private static bool HasNotAutoTrimSpacesAttribute(PropertyInfo propertyInfo){return propertyInfo.GetCustomAttribute<NotAutoTrimSpacesAttribute>()!= null;}/// <summary>/// 去空格操作/// </summary>/// <param name="objType">类型</param>/// <param name="obj">当前对象</param>public static void TypeTrim(Type objType, object obj){if (HasNotAutoTrimSpacesAttribute(objType) || obj == null) { return; }PropertyInfo[] typeProperties = GetTypeProperties(objType);foreach (var typeProperty in typeProperties){if (HasNotAutoTrimSpacesAttribute(typeProperty)) { continue; }var cPropertyType = typeProperty.PropertyType;if (cPropertyType == typeof (string)){if (!typeProperty.CanWrite){continue;}string value = typeProperty.GetValue(obj) as string;if (value != null){typeProperty.SetValue(obj, value.Trim());}}else{if (cPropertyType.IsClass){if (cPropertyType.IsValueType){continue;}if (cPropertyType.GetInterface(typeof (IEnumerable).Name, false) != null){var values = typeProperty.GetValue(obj) as IEnumerable;if (values != null){var enumerator = values.GetEnumerator();while (enumerator.MoveNext()){if (enumerator.Current != null){var itemType = enumerator.Current.GetType();TypeTrim(itemType, enumerator.Current);}}}}else{TypeTrim(cPropertyType, typeProperty.GetValue(obj));}}}}}}

转载于:https://www.cnblogs.com/huangzelin/p/10107075.html

Request参数值自动去空格相关推荐

  1. Copy++ 复制 PDF、CAJ 内容时,自动删除空格、空行,以及自动翻译[Win]

    介绍: Copy++ 是一款帮助你去除复制 PDF.CAJ 内容时的空格.空行的小工具,另外还支持自动翻译功能,堪称论文神器. 自动合并换行 自动去除空格 自动翻译 所有的功能都是自动的,即只需要开着 ...

  2. html5中英文间自动空格,如何快速在文章中英文数字间自动添加空格

    在中文.英文.数字之间用空格隔开,观感和阅读上显得更加分明,也就是说整体的排版会更加的好看,但是如果在编写文章的时候去添加,就会显得特别的繁琐和降低编辑或写作效率了,不过为了养成习惯,还是推荐在编写的 ...

  3. 去空格/去空白行在线工具

    在线字符串去空格,在线计算,在线计算器,计算器在线计算 自动字符串前后去除空格,字符串中间去除空格,字符串去回车,换行,制表符

  4. 输入手机号码自动填充空格 变成3-4-4格式

    电话号码3-4-4格式实现方式 在最近的开发中遇到将电话号码展示成3-4-4格式的需求(如:132 2222 3333这样子),乍一看这个要求挺简单的,因为只需要在满足长度的字符串固定位置加上相应的空 ...

  5. 【PHP】字符串去空格并将每个单词首字母转换成大写de多种解法

    问题描述 编写camel_case方法,实现将字符串去掉空格,并将每个单词的第一个字母转换成大写. 例如: camel_case("hello case"); // => & ...

  6. js去空格的三种方法

    2019独角兽企业重金招聘Python工程师标准>>> 方法一: 个人认为最好的方法.采用的是正则表达式,这是最核心的原理. 其次.这个方法使用了JavaScript 的protot ...

  7. SQL Server中的小技巧(重复、替换、截取、去空格、去小数点后的位数)

    PS:随笔写的在SQL Server中要用到的 (重复.替换.截取.去空格.去小数点后的位数) /*---------------------------重复--------------------- ...

  8. python 多进程——使用进程池,多进程消费的数据)是一个队列的时候,他会自动去队列里依次取数据...

    我的mac 4核,因此每次执行的时候同时开启4个线程处理: # coding: utf-8import time from multiprocessing import Pooldef long_ti ...

  9. 字符串操作:索引位置、去空格、替换字符串

    指定字符的索引位置:s.indexOf().s.lastIndexOf()  (以字符串s为例.第一次与最后一次出现的位置) 指定索引位置的字符:s.charAt() 去除前.后空格:s.trim() ...

最新文章

  1. 第二届清华大学项目管理精英训练营【敏捷个人】分享
  2. Data Partitioning Guidance
  3. Windows Server 2012下安装Hyper-V虚拟机
  4. Mybatis加入Ehcache支持
  5. 2021-05-21 matlab 傅里叶变换后恢复信号
  6. Java多线程的同步机制:synchronized
  7. 【CF1199 D,E, F】Welfare State // Matching vs Independent Set // Rectangle Painting 1
  8. 工作68:json校验工具
  9. Python 数据分析三剑客之 Pandas(三):算术运算与缺失值的处理
  10. [导入]关于:web.config 的配置说明
  11. 使用Dism++和Dism为优启通08PE添加驱动
  12. 在线OPML压缩工具
  13. 苹果手机换电池对手机有影响吗_网上预约手机上门换电池可靠吗?官方回应:售后也这么换!...
  14. python实现截取excel中的表格,生成图片
  15. 实现Word页面行数控制、公文排版就是那么精准
  16. 选择适合的Node js授权认证策略
  17. 我需要30部美或英剧的剧名
  18. 洛谷——P7583 [COCI2012-2013#1] DOM(java实现)
  19. CSS3实用效果大全
  20. 【android】绘制圆环的三种方式

热门文章

  1. 袁晖:C2B汽车电商模式创新
  2. Matplotlib for Python Developers
  3. 从ASP.NET传递参数给水晶报表
  4. 去除linux控制台光标
  5. Weblogic10 + EJB3入门教程(1):编写第一个无状态会话Bean(Stateless Session Bean)...
  6. 战神背光键盘如何关系_显瘦又有肌肉 神舟战神Z7MKP5GZ评测
  7. 剑指offer 算法 (代码的鲁棒性)
  8. Echarts之悬浮框中的数据排序
  9. HTML课堂笔记02-21
  10. IromPython .Net 的简介和第一个例子