java 注解 去空格_Spring实现封装自定义注解@Trimmed清除字符串前后的空格

importjava.text.ParseException;importjava.util.Collections;importjava.util.HashMap;importjava.util.HashSet;importjava.util.Locale;importjava.util.Map;importjava.util.Set;importjava.util.regex.Pattern;importorg.springframework.format.AnnotationFormatterFactory;importorg.springframework.format.Formatter;importorg.springframework.format.Parser;importorg.springframework.format.Printer;importTrimmed.TrimmerType;/*** 清除字符串前后的空格自定义注解格式工厂*/

public class TrimmedAnnotationFormatterFactory implements AnnotationFormatterFactory{private static final MapTRIMMER_FORMATTER_MAP;static{

TrimmerType[] values=Trimmed.TrimmerType.values();

Map map = new HashMap(values.length);for(TrimmerType type : values) {

map.put(type,newTrimmerFormatter(type));

}

TRIMMER_FORMATTER_MAP=Collections.unmodifiableMap(map);

}

@Overridepublic Set>getFieldTypes() {

Set> fieldTypes = new HashSet>(1, 1);

fieldTypes.add(String.class);returnfieldTypes;

}

@Overridepublic Parser> getParser(Trimmed annotation, Class>fieldType) {returnTRIMMER_FORMATTER_MAP.get(annotation.value());

}

@Overridepublic Printer> getPrinter(Trimmed annotation, Class>fieldType) {returnTRIMMER_FORMATTER_MAP.get(annotation.value());

}private static class TrimmerFormatter implements Formatter{private static final Pattern PATTERN_WHITESPACES = Pattern.compile("\\s+");private static final Pattern PATTERN_WHITESPACES_WITH_LINE_BREAK = Pattern.compile("\\s*\\n\\s*");private static final Pattern PATTERN_WHITESPACES_EXCEPT_LINE_BREAK = Pattern.compile("[\\s&&[^\\n]]+");private finalTrimmerType type;publicTrimmerFormatter(TrimmerType type) {if (type == null)throw newNullPointerException();this.type =type;

}

@OverridepublicString print(String object, Locale locale) {returnobject;

}

@Overridepublic String parse(String text, Locale locale) throwsParseException {

text=text.trim();switch(type) {caseALL_WHITESPACES:return PATTERN_WHITESPACES.matcher(text).replaceAll(" ");caseEXCEPT_LINE_BREAK:returnPATTERN_WHITESPACES_EXCEPT_LINE_BREAK

.matcher(PATTERN_WHITESPACES_WITH_LINE_BREAK.matcher(text).replaceAll("\n")).replaceAll(" ");caseSIMPLE:returntext;default://not possible

throw newAssertionError();

}

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值