in java/fury-core/src/main/java/org/apache/fury/meta/MetaStringEncoder.java [170:200]
private StringStatistics computeStatistics(char[] chars) {
boolean canLowerUpperDigitSpecialEncoded = true;
boolean canLowerSpecialEncoded = true;
int digitCount = 0;
int upperCount = 0;
for (char c : chars) {
if (canLowerUpperDigitSpecialEncoded) {
if (!((c >= 'a' && c <= 'z')
|| (c >= 'A' && c <= 'Z')
|| (c >= '0' && c <= '9')
|| (c == specialChar1 || c == specialChar2))) {
// Character outside of LOWER_UPPER_DIGIT_SPECIAL set
canLowerUpperDigitSpecialEncoded = false;
}
}
if (canLowerSpecialEncoded) {
if (!((c >= 'a' && c <= 'z') || (c == '.' || c == '_' || c == '$' || c == '|'))) {
// Character outside of LOWER_SPECIAL set
canLowerSpecialEncoded = false;
}
}
if (Character.isDigit(c)) {
digitCount++;
}
if (Character.isUpperCase(c)) {
upperCount++;
}
}
return new StringStatistics(
digitCount, upperCount, canLowerSpecialEncoded, canLowerUpperDigitSpecialEncoded);
}