commons-text
概述
maven依赖
<!-- https://mvnrepository.com/artifact/org.apache.commons/commons-text -->
<dependency><groupId>org.apache.commons</groupId><artifactId>commons-text</artifactId><version>1.14.0</version>
</dependency>
示例
- 构造字符串示例
TextStringBuilder trim = TextStringBuilder.wrap(new char[]{}).append("123456789")//追加字符串.appendFixedWidthPadLeft("abcdefg",10,' ')//追加固定10个字符,左边填充空格.trim();//去掉两边空格System.out.println(trim.midString(3,8));System.out.println(trim.toString());
- 单词操作示例
System.out.println(WordUtils.initials("I LIKE TO EAT APPLE PIE"));//单词首字母:ILTEAPSystem.out.println(WordUtils.capitalize("I LIKE TO EAT APPLE PIE"));//单词首字母大写:I LIKE TO EAT APPLE PIESystem.out.println(WordUtils.capitalizeFully("I LIKE TO EAT APPLE PIE"));//单词首字母大写其他字母小写:I Like To Eat Apple PieSystem.out.println(WordUtils.swapCase("I LIKE TO EAT APPLE PIE"));//大小写互换:i like to eat apple pieSystem.out.println(WordUtils.uncapitalize("I LIKE TO EAT APPLE PIE"));//单词首字母大写:i lIKE tO eAT aPPLE pIE
- 字符串拆分示例
StringTokenizer tokenizer = new StringTokenizer("a b c d e f", " ");System.out.println(tokenizer.getContent());System.out.println(Arrays.toString(tokenizer.getTokenArray()));while (tokenizer.hasNext()) {System.out.println(tokenizer.nextToken());}while (tokenizer.hasPrevious()) {System.out.println(tokenizer.previousToken());}
//大小写加数字随机生成10位字符串System.out.println(RandomStringGenerator.builder().withinRange(new char[]{'a', 'z'},new char[]{'A', 'Z'},new char[]{'0', '9'}).build().generate(10));
- 字符串对比示例
StringsComparator stringsComparator = new StringsComparator("123456789","123465789");stringsComparator.getScript().visit(new CommandVisitor<Character>() {@Overridepublic void visitDeleteCommand(Character character) {System.out.println("删除字符:"+character);}@Overridepublic void visitInsertCommand(Character character) {System.out.println("新增字符:"+character);}@Overridepublic void visitKeepCommand(Character character) {System.out.println("保留字符:"+character);}});
常用API
CaseUtils 字符串转换为驼峰格式
方法 | 说明 |
---|---|
toCamelCase(String str, boolean letter, char… delimiters) | 转换为驼峰格式。letter为是否首字母大写;delimiters为分隔符。 |
FormattableUtils 文本格式化工具
方法 | 说明 |
---|---|
append(CharSequence seq, Formatter formatter, int flags, int width, int precision) append(CharSequence seq, Formatter formatter, int flags, int width, int precision, char padChar) append(CharSequence seq, Formatter formatter, int flags, int width, int precision, char padChar, CharSequence truncateEllipsis) append(CharSequence seq, Formatter formatter, int flags, int width, int precision, CharSequence ellipsis) | 文本格式化追加。seq:要格式化的字符序列; formatter:Formatter 对象,用于定义格式化规则; flags:格式化标志(如截断、对齐方式); width:输出宽度; precision:精度控制(数值格式化时使用) |
toString(Formattable formattable) | 转为字符串 |
StringEscapeUtils 文本转义工具
方法 | 说明 |
---|---|
builder(CharSequenceTranslator translator) | 通过构造方式及转换器处理 |
escapeCsv(String input) unescapeCsv(String input) | 用于处理CSV格式字符串转义或反转义 |
escapeEcmaScript(String input) unescapeEcmaScript(String input) | 用于处理Ecma脚本格式字符串转义或反转义 |
escapeHtml3(String input) unescapeHtml3(String input) | 用于处理html3格式字符串转义或反转义 |
escapeHtml4(String input) unescapeHtml4(String input) | 用于处理html4格式字符串转义或反转义 |
escapeJava(String input) unescapeJava(String input) | 用于处理java格式字符串转义或反转义 |
escapeJson(String input) unescapeJson(String input) | 用于处理json格式字符串转义或反转义 |
escapeXml10(String input) escapeXml11(String input) unescapeXml(String input) | 用于处理xml格式字符串转义或反转义 |
escapeXSI(String input) unescapeXSI(String input) | 用于处理xsi格式字符串转义或反转义 |
WordUtils 单词工具
方法 | 说明 |
---|---|
abbreviate(String str, int lower, int upper, String appendToEnd) | 从指定位置截断字符串,并可选添加后缀。lower、upper为最大或最小截取位置 |
capitalize(String str) capitalize(String str, char… delimiters) | 用于将字符串中每个单词的首字母大写。可设置自定义单词分隔符,默认空格 |
capitalizeFully(String str) capitalizeFully(String str, char… delimiters) | 用于将字符串中所有单词的首字母大写且其余字母小写 |
containsAllWords(CharSequence word, CharSequence… words) | 用于检查字符串是否包含指定数组中所有单词 |
initials(String str) initials(String str, char… delimiters) | 用于提取字符串中每个单词首字母并组合成缩写 |
swapCase(String str) | 用于将字符串中的大小写字母互换 |
uncapitalize(String str) uncapitalize(String str, char… delimiters) | 用于将字符串中每个单词的首字母小写。 |
wrap(String str, int wrapLength) wrap(String str, int wrapLength, String newLineStr, boolean wrapLongWords) wrap(String str, int wrapLength, String newLineStr, boolean wrapLongWords, String wrapOn) | 按固定长度换行文本 |
StringSubstitutor 文本模板替换工具
方法 | 说明 |
---|---|
createInterpolator() | 静态方法,获取实例 |
replace(Object source, Map<String, V> valueMap) replace(Object source, Map<String, V> valueMap, String prefix, String suffix) replace(Object source, Properties valueProperties) | 文本中的变量替换,默认替换中的变量,可设置默认值:{}中的变量,可设置默认值:中的变量,可设置默认值:{key:-defaultValue} |
replaceSystemProperties(Object source) | 静态方法,将字符串中的系统属性(例如:${java.version})值替换为实际值。 |
StringSubstitutor() StringSubstitutor(Map<String, V> valueMap) StringSubstitutor(Map<String, V> valueMap, String prefix, String suffix) StringSubstitutor(Map<String, V> valueMap, String prefix, String suffix, char escape) StringSubstitutor(Map<String, V> valueMap, String prefix, String suffix, char escape, String valueDelimiter) StringSubstitutor(StringLookup variableResolver) StringSubstitutor(StringLookup variableResolver, String prefix, String suffix, char escape) StringSubstitutor(StringLookup variableResolver, String prefix, String suffix, char escape, String valueDelimiter) StringSubstitutor(StringLookup variableResolver, StringMatcher prefixMatcher, StringMatcher suffixMatcher, char escape) StringSubstitutor(StringLookup variableResolver, StringMatcher prefixMatcher, StringMatcher suffixMatcher, char escape, StringMatcher valueDelimiterMatcher) StringSubstitutor(StringSubstitutor other) | 构造方法 |
setDisableSubstitutionInValues(boolean disableSubstitutionInValues) isDisableSubstitutionInValues() | 用于控制是否禁用变量值中嵌套替换 |
setEnableSubstitutionInVariables(boolean enableSubstitutionInVariables) isEnableSubstitutionInVariables() | 控制变量名本身是否支持嵌套 |
setEnableUndefinedVariableException(boolean failOnUndefinedVariable) isEnableUndefinedVariableException() | 用于控制未定义变量是否抛出异常 |
setEscapeChar(char escapeChar) getEscapeChar() | 用于设置转义字符 |
setPreserveEscapes(boolean preserveEscapes) isPreserveEscapes() | 用于控制转义字符是否保留在结果中 |
setValueDelimiter(char valueDelimiter) setValueDelimiter(String valueDelimiter) | 设置单字符的默认值分隔符(如 :- 中的 :) |
setValueDelimiterMatcher(StringMatcher valueDelimiterMatcher) getValueDelimiterMatcher() | 定义复杂分隔符逻辑 |
setVariablePrefix(char prefix) setVariablePrefix(String prefix) | 设置变量前缀 |
setVariablePrefixMatcher(StringMatcher prefixMatcher) getVariablePrefixMatcher() | 定义复杂变量前缀逻辑 |
setVariableSuffix(char suffix) setVariableSuffix(String suffix) | 设置变量后缀 |
setVariableSuffixMatcher(StringMatcher suffixMatcher) getVariableSuffixMatcher() | 定义复杂变量后缀逻辑 |
setVariableResolver(StringLookup variableResolver) getStringLookup() | 用于设置自定义变量解析器 |
replace(char[] source) replace(char[] source, int offset, int length) replace(CharSequence source) replace(CharSequence source, int offset, int length) replace(Object source) replace(String source) replace(String source, int offset, int length) replace(StringBuffer source) replace(StringBuffer source, int offset, int length) replace(TextStringBuilder source) replace(TextStringBuilder source, int offset, int length) | 文本中的变量替换,默认替换中的变量,可设置默认值:{}中的变量,可设置默认值:中的变量,可设置默认值:{key:-defaultValue} |
replaceIn(StringBuffer source) replaceIn(StringBuffer source, int offset, int length) replaceIn(StringBuilder source) replaceIn(StringBuilder source, int offset, int length) replaceIn(TextStringBuilder source) replaceIn(TextStringBuilder source, int offset, int length) | 文本中的变量替换,直接修改传入的 StringBuilder 对象,而非创建新字符串 |
StringTokenizer 文本分割工具
方法 | 说明 |
---|---|
getCSVInstance() getCSVInstance(char[] input) getCSVInstance(String input) | 静态方法,获取CSV实例 |
getTSVInstance() getTSVInstance(char[] input) getTSVInstance(String input) | 静态方法,获取TSV实例 |
StringTokenizer() StringTokenizer(char[] input) StringTokenizer(char[] input, char delim) StringTokenizer(char[] input, char delim, char quote) StringTokenizer(char[] input, String delim) StringTokenizer(char[] input, StringMatcher delim) StringTokenizer(char[] input, StringMatcher delim, StringMatcher quote) StringTokenizer(String input) StringTokenizer(String input, char delim) StringTokenizer(String input, char delim, char quote) StringTokenizer(String input, String delim) StringTokenizer(String input, StringMatcher delim) StringTokenizer(String input, StringMatcher delim, StringMatcher quote) | 构造方法 |
clone() | 对象克隆 |
getContent() | 获取内容字符串 |
getTokenArray() | 获取字符串拆分的数组 |
getTokenList() | 获取字符串拆分的集合 |
hasNext() | 判断下一个是否有值 |
nextToken() | 获取下一个值,无值返回null |
next() | 获取下一个值,无值抛异常 |
hasPrevious() | 判断上一个是否有值 |
previousToken() | 获取上一个值,无值返回null |
previous() | 获取上一个值,无值抛异常 |
nextIndex() | 获取下一个值索引 |
previousIndex() | 获取上一个值索引 |
reset() reset(char[] input) reset(String input) | 重置文本 |
setDelimiterChar(char delim) | 设置字符分隔符 |
setDelimiterMatcher(StringMatcher delim) getDelimiterMatcher() | 动态设置复杂分隔符匹配规则 |
setDelimiterString(String delim) | 设置字符串分隔符 |
setEmptyTokenAsNull(boolean emptyAsNull) isEmptyTokenAsNull() | 设置是否分割后的空文本为null |
setIgnoredChar(char ignored) | 设置忽略的字符 |
setIgnoredMatcher(StringMatcher ignored) getIgnoredMatcher() | 用于设置忽略字符匹配规则 |
setIgnoreEmptyTokens(boolean ignoreEmptyTokens) isIgnoreEmptyTokens() | 设置是否忽略分割后的空文本 |
setQuoteChar(char quote) | 设置引号字符 |
setQuoteMatcher(StringMatcher quote) getQuoteMatcher() | 设置引号匹配规则 |
setTrimmerMatcher(StringMatcher trimmer) getTrimmerMatcher() | 设置修剪字符匹配规则 |
size() | 获取分割字符串数量 |
RandomStringGenerator 随机字符串生成工具
方法 | 说明 |
---|---|
builder() | 静态方法,获取构造器对象 |
generate(int var1) generate(int minLengthInclusive, int maxLengthInclusive) | 随机生成指定格式的字符串 |
RandomStringGenerator.Builder
方法 | 说明 |
---|---|
get() | 获取RandomStringGenerator对象 |
filteredBy(CharacterPredicate… predicates) | 设置判断字符是否符合特定条件的接口,过滤指定字符 |
selectFrom(char… chars) | 设置随机生成的字符串的字符 |
setAccumulate(boolean accumulate) | 配置是否累积算数结果 |
usingRandom(IntUnaryOperator random) usingRandom(TextRandomProvider random) | 设置随机提供对象 |
withinRange(char[]… pairs) withinRange(int minimumCodePoint, int maximumCodePoint) | 设置随机字符串的字符范围 |
TextStringBuilder 文本构造工具
方法 | 说明 |
---|---|
wrap(char[] initialBuffer) wrap(char[] initialBuffer, int length) | 静态方法,可配置初始字符数组及长度 |
TextStringBuilder() TextStringBuilder(CharSequence seq) TextStringBuilder(int initialCapacity) TextStringBuilder(String str) | 构造方法 |
append(long value) | 链式调用方法,追加基础类型数据(boolean、char、double、float、int、long) |
append(char[] chars) append(char[] chars, int startIndex, int length) | 链式调用方法,追加数据(char[]、CharBuffer、CharSequence、String、StringBuffer、StringBuilder、TextStringBuilder) |
append(Object obj) append(String format, Object… objs) | 链式调用方法,追加对象或格式化字符串 |
appendAll(Iterable<?> iterable) appendAll(Iterator<?> it) appendAll(T… array) | 链式调用方法,批量追加数据 |
appendFixedWidthPadLeft(int value, int width, char padChar) appendFixedWidthPadLeft(Object obj, int width, char padChar) | 追加固定长度数据,过短向左补字符,过长从右端截取。 |
appendFixedWidthPadRight(int value, int width, char padChar) appendFixedWidthPadRight(Object obj, int width, char padChar) | 追加固定长度数据,过短向右补字符,过长从左端截取。 |
appendln(long value) | 链式调用方法,追加带换行符(后面)的基础类型数据(boolean、char、double、float、int、long) |
appendln(char[] chars) append(char[] chars, int startIndex, int length) | 链式调用方法,追加带换行符(后面)的数据(char[]、String、StringBuffer、StringBuilder、TextStringBuilder) |
appendNewLine() | 链式调用方法,追加系统换行符 |
appendNull() | 链式调用方法,追加一个null值,默认不追加任何字符,可通过setNullText方法配置 |
appendPadding(int length, char padChar) | 链式调用方法,追加指定个数的字符 |
appendSeparator(String separator) appendSeparator(String separator, int loopIndex) appendSeparator(String standard, String defaultIfEmpty) | 链式调用方法,追加分隔符(字符串或字符) |
appendWithSeparators(Iterable<?> iterable, String separator) appendWithSeparators(Iterator<?> it, String separator) appendWithSeparators(Object[] array, String separator) | 链式调用方法,追加带分隔符的多值 |
clear() | 链式调用方法,情况所有字符 |
delete(int startIndex, int endIndex) | 链式调用方法,删除指定范围索引(包括开始不包括结尾)的字符 |
deleteAll(char ch) deleteAll(String str) deleteAll(StringMatcher matcher) | 链式调用方法,删除指定的字符、字符串或匹配到的字符 |
deleteCharAt(int index) | 链式调用方法,删除指定索引位置的字符 |
deleteFirst(char ch) deleteFirst(String str) deleteFirst(StringMatcher matcher) | 链式调用方法,删除匹配到的第一个字符、字符串 |
ensureCapacity(int capacity) | 链式调用方法,预分配字符数组容量 |
insert(int index, long value) | 链式调用方法,在指定索引位置插入类型数据(boolean、char、double、float、int、long) |
insert(int index, char[] chars) insert(int index, char[] chars, int offset, int length) | 链式调用方法,在指定索引位置插入字符数组 |
insert(int index, Object obj) insert(int index, String str) | 链式调用方法,在指定索引位置插入字符串或对象 |
minimizeCapacity() | 链式调用方法,用于缩减内部字符数组容量 |
replace(int startIndex, int endIndex, String replaceStr) replace(StringMatcher matcher, String replaceStr, int startIndex, int endIndex, int replaceCount) | 链式调用方法,替换指定字符 |
replaceAll(char search, char replace) replaceAll(String searchStr, String replaceStr) replaceAll(StringMatcher matcher, String replaceStr) | 链式调用方法,批量替换匹配到的字符 |
replaceFirst(char search, char replace) replaceFirst(String searchStr, String replaceStr) replaceFirst(StringMatcher matcher, String replaceStr) | 链式调用方法,替换匹配到的第一个字符 |
reverse() | 链式调用方法,反转字符串 |
set(CharSequence str) | 链式调用方法,设置字符序列。先清空再追加 |
setCharAt(int index, char ch) | 链式调用方法,设置指定位置的字符。 |
setLength(int length) | 链式调用方法,设置长度。 |
setNewLineText(String newLine) | 链式调用方法,设置换行符。默认 \n 或 \r\n |
setNullText(String nullText) | 链式调用方法,设置空文本 |
trim() | 链式调用方法,去除前后端空格 |
appendTo(Appendable appendable) | 追加到可追加字符序列 |
asReader() | 转换为 Reader |
asWriter() | 转换为 Writer |
asTokenizer() | 转换为 StringTokenizer |
capacity() | 获取预分配字符数组容量 |
charAt(int index) | 获取指定位置字符 |
contains(char ch) contains(String str) contains(StringMatcher matcher) | 判断是否包含指定字符、字符串 |
drainChar(int index) | 获取指定位置字符并删除该字符 |
drainChars(int startIndex, int endIndex, char[] target, int targetIndex) | 用于批量读取并可选删除字符的方法,支持通过偏移量和长度参数控制操作范围。 |
startsWith(String str) | 判断是否已指定字符串开头 |
endsWith(String str) | 判断是否已指定字符串结尾 |
equals(Object obj) equals(TextStringBuilder other) | 判断是否相等 |
equalsIgnoreCase(TextStringBuilder other) | 忽略大小写判断是否相等 |
get() | 获取字符串 |
getChars(char[] target) getChars(int startIndex, int endIndex, char[] target, int targetIndex) | 获取字符到指定target数组中 |
getNewLineText() | 获取换行符 |
getNullText() | 获取null文本 |
indexOf(char ch) indexOf(char ch, int startIndex) indexOf(String str) indexOf(String str, int startIndex) indexOf(StringMatcher matcher) indexOf(StringMatcher matcher, int startIndex) | 获取从头匹配指定字符或字符串的索引 |
isEmpty() | 判断是否为空 |
isNotEmpty() | 判断是否不为空 |
isReallocated() | 用于检查内部字符数组是否被重新分配的方法,通常用于调试或性能优化场景。 |
lastIndexOf(char ch) lastIndexOf(char ch, int startIndex) lastIndexOf(String str) lastIndexOf(String str, int startIndex) lastIndexOf(StringMatcher matcher) lastIndexOf(StringMatcher matcher, int startIndex) | 获取从末尾匹配指定字符或字符串的索引 |
leftString(int length) | 从左截取指定长度的字符串 |
rightString(int length) | 从右截取指定长度的字符串 |
length() size() | 获取字符串长度 |
midString(int index, int length) | 获取指定位置指定长度的字符串 |
readFrom(CharBuffer charBuffer) readFrom(Readable readable) readFrom(Reader reader) readFrom(Reader reader, int count) | 读取字符数据 |
subSequence(int startIndex, int endIndex) | 截取字符串,验证索引值 |
substring(int start) substring(int startIndex, int endIndex) | 截取字符串 |
toCharArray() toCharArray(int startIndex, int endIndex) | 转换为字符数组 |
toString() | 转换为字符串 |
toStringBuffer() | 转换为StringBuffer |
toStringBuilder() | 转换为StringBuilder |