This commit is contained in:
Looly 2023-12-06 16:43:07 +08:00
parent cbfb2561ce
commit 221963674b

View File

@ -3145,16 +3145,15 @@ public class CharSequenceUtil extends StrValidator {
// 检查转换前后是否有编码无变化则不转换返回原字符串 // 检查转换前后是否有编码无变化则不转换返回原字符串
final char c = string.charAt(index); final char c = string.charAt(index);
final Character newC = replaceFunc.apply(c); final Character newC = replaceFunc.apply(c);
if(c == newC){ if (c == newC) {
// 无变化返回原字符串 // 无变化返回原字符串
return string; return string;
} }
// 此处转换为字符数组 // 此处不复用传入的CharSequence防止修改原对象
final char[] charArray = string.toCharArray(); final StringBuilder builder = new StringBuilder(str);
charArray[index] = replaceFunc.apply(charArray[index]); builder.setCharAt(index, replaceFunc.apply(c));
return builder.toString();
return String.valueOf(charArray);
} }
// endregion // endregion
@ -3372,13 +3371,16 @@ public class CharSequenceUtil extends StrValidator {
} }
final char c = str.charAt(index); final char c = str.charAt(index);
if (Character.isLowerCase(c)) { if (!Character.isLowerCase(c)) {
// return subPre(str, index) + Character.toUpperCase(c) + subSuf(str, index + 1); // 非小写不转换某些字符非小写也非大写一并略过
final char[] charArray = string.toCharArray(); return string;
charArray[index] = Character.toUpperCase(c);
return String.valueOf(charArray);
} }
return string;
// 此处不复用传入的CharSequence防止修改原对象
final StringBuilder builder = new StringBuilder(str);
builder.setCharAt(index, Character.toUpperCase(c));
return builder.toString();
} }
/** /**
@ -3406,14 +3408,16 @@ public class CharSequenceUtil extends StrValidator {
} }
final char c = str.charAt(index); final char c = str.charAt(index);
if (Character.isUpperCase(c)) { if (!Character.isUpperCase(c)) {
// return subPre(str, index) + Character.toLowerCase(c) + subSuf(str, index + 1); // 非大写不转换某些字符非小写也非大写一并略过
final char[] charArray = string.toCharArray(); return string;
charArray[index] = Character.toLowerCase(c);
return String.valueOf(charArray);
} }
return string; // 此处不复用传入的CharSequence防止修改原对象
final StringBuilder builder = new StringBuilder(str);
builder.setCharAt(index, Character.toLowerCase(c));
return builder.toString();
} }
/** /**
@ -3575,6 +3579,17 @@ public class CharSequenceUtil extends StrValidator {
} }
// endregion // endregion
/**
* 创建StringBuilder对象<br>
* 如果对象本身为{@link StringBuilder}直接返回否则新建
*
* @param str {@link CharSequence}
* @return StringBuilder对象
*/
public static StringBuilder builder(final CharSequence str) {
return str instanceof StringBuilder ? (StringBuilder) str : new StringBuilder(str);
}
/** /**
* 创建StringBuilder对象 * 创建StringBuilder对象
* *