美文网首页
SpringBoot去除请求参数中的表情符号和首尾空白字符

SpringBoot去除请求参数中的表情符号和首尾空白字符

作者: 风静花犹落 | 来源:发表于2024-01-30 21:08 被阅读0次

一、配置

  1. 定义正则表达式
    /**
     * 正则静态常量
     */
    public interface PatternConstant {
    
        /**
         * 匹配表情符号
         **/
        Pattern EMOJI = Pattern.compile("[\ud83c\udc00-\ud83c\udfff]|[\ud83d\udc00-\ud83d\udfff]|[\u2600-\u27ff]");
    
    }
    
  2. RequestBody 中 JSON 对象参数
    @Configuration
    public class JacksonConfig {
    
          @Bean
        public Jackson2ObjectMapperBuilderCustomizer jackson2ObjectMapperBuilderCustomizer() {
            return jacksonMapper -> jacksonMapper.deserializerByType(String.class, new StdScalarDeserializer<String>(String.class) {
                @Override
                public String deserialize(JsonParser jsonParser, DeserializationContext ctx) throws IOException {
                    String text = jsonParser.getValueAsString();
                    if (text == null) {
                        return null;
                    }
    
                    Matcher matcher = PatternConstant.EMOJI.matcher(text);
                    return matcher.replaceAll("").trim();
                }
    
            });
        }
        
    }
    
  1. URL 和 FORM 表单中的参数
    /**
     * 去除请求参数中的表情符号和首尾空白字符
     */
    @ControllerAdvice
    public class WebMvcAutoTrimEmojiConfig {
    
        
        @InitBinder
        public void initWebDataBinder(WebDataBinder binder) {
         //当值为" "时,是否转换为null
            StringTrimmerEditor propertyEditor = new StringTrimEmojiEditor(true);
             // 为 String 类对象注册编辑器
            binder.registerCustomEditor(String.class, propertyEditor);
        }
    
        public static class StringTrimEmojiEditor extends PropertyEditorSupport {
    
            /**
             * 当值为" "时,是否转换为null
             */
            private final boolean emptyAsNull;
    
            public StringTrimEmojiEditor(boolean emptyAsNull) {
                this.emptyAsNull = emptyAsNull;
            }
    
            @Override
            public void setAsText(@Nullable String text) {
                if (text == null) {
                    setValue(null);
                } else {
    
                    Matcher matcher = PatternConstant.EMOJI.matcher(text);
                    String value = matcher.replaceAll("").trim();
    
                    if (this.emptyAsNull && value.isEmpty()) {
                        super.setValue(null);
                    } else {
                        super.setValue(value);
                    }
                }
            }
    
            @Override
            public String getAsText() {
                Object value = getValue();
                return (value != null ? value.toString() : "");
            }
    
        }
    
    }
    

提示: 如果只去除首尾空白字符可以直接使用 org.springframework.beans.propertyeditors.StringTrimmerEditor

二、测试

@RestController
@RequestMapping(value = "/")
public class SpringTrimController {

    @GetMapping("/url")
    public String urlParam(String name) {
        return name;
    }

    @PostMapping("/form")
    public User formParam(User user) {
        return user;
    }

    @PostMapping(value = "/body")
    public User bodyParam(@RequestBody User user) {
        return user;
    }

}

相关文章

  • iOS 字符串过滤空白字符和换行符

    //去除掉首尾的空白字符和换行字符 // 去掉首尾的空白字符 // 去掉换行符 // originalString...

  • PHP基础 —— 字符串处理

    字符串处理 字符串处理 去除字符串首尾字符 trim() 去除字符串首尾两边的空白字符(或者其他字符) " ",空...

  • 过滤空白符和换行符

    //去除掉首尾的空白字符和换行字符NSString *detail = [transPond.detail str...

  • PHP系统函数----常用字符串函数

    去空格或者其他字符串 trim() :去除首尾空白字符 空白字符包括:\t,\n,"",\0,\xoB rtrim...

  • 4.php字符串操作

    去除首尾空格和特殊字符 PHP中提供了三个去除首尾空格和特殊字符的方法: 1)trim() 函数用来去除字符串左右...

  • php 生成签名

    将所有业务请求参数按字母先后顺序排序 参数名称和参数值链接成一个字符串A 在字符串A的首尾加上appsecret组...

  • 【iOS】去除字符串首尾空格或某字符

    在iOS的实际开发中,常会出现需要去除空格的情况,总结有三种情况: 去除字符串首尾连续字符(如空格); 去除字符串...

  • 常用字符串函数:

    //去除字符串首尾空格和特殊字符 trim() //截取字符串 substr() 、mb_substr() //查...

  • 2017.10.10

    Trim()删除字符串首尾的空白(可以首尾一起,也可以指定首或尾,取决于控制参数),但会保留字符串内部作为词与词之...

  • iOS_去除UITextView/UITextField字符串首

    去除首尾空格: 去除首尾空格和换行:

网友评论

      本文标题:SpringBoot去除请求参数中的表情符号和首尾空白字符

      本文链接:https://www.haomeiwen.com/subject/bsloodtx.html