diff --git a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/StringArithmetic.java b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/StringArithmetic.java index e54eb745e2b62d..87b817134e0922 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/StringArithmetic.java +++ b/fe/fe-core/src/main/java/org/apache/doris/nereids/trees/expressions/functions/executable/StringArithmetic.java @@ -420,12 +420,9 @@ public static Expression characterLength(StringLikeLiteral first) { return new IntegerLiteral(first.getValue().codePointCount(0, first.getValue().length())); } - private static boolean isSeparator(char c) { - if (".$|()[{^?*+\\".indexOf(c) == -1) { - return false; - } else { - return true; - } + private static boolean isAlphabetic(char c) { + Pattern pattern = Pattern.compile("\\p{Alnum}"); + return pattern.matcher(String.valueOf(c)).find(); } /** @@ -437,7 +434,7 @@ public static Expression initCap(StringLikeLiteral first) { boolean capitalizeNext = true; for (char c : first.getValue().toCharArray()) { - if (Character.isWhitespace(c) || isSeparator(c)) { + if (Character.isWhitespace(c) || !isAlphabetic(c)) { result.append(c); capitalizeNext = true; // Next character should be capitalized } else if (capitalizeNext) {