This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-lang.git


The following commit(s) were added to refs/heads/master by this push:
     new 53dc633eb Streamline StringUtils.truncate(String, int, int)
53dc633eb is described below

commit 53dc633eb330bea4335b015a273346553446bb8a
Author: Gary Gregory <[email protected]>
AuthorDate: Fri Dec 19 14:11:04 2025 -0500

    Streamline StringUtils.truncate(String, int, int)
---
 src/changes/changes.xml                                 |  1 +
 src/main/java/org/apache/commons/lang3/StringUtils.java | 12 ++++--------
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 3ad3fd1d1..0a3ada203 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -84,6 +84,7 @@ The <action> type attribute can be add,update,fix,remove.
     <action                   type="fix" dev="ggregory" due-to="Gary 
Gregory">Speedup CharSequenceUtils.toCharArray(CharSequence) for StringBuilder 
input: 160-205% improvement (2-3x faster), see 
CharSequenceUtilsBenchmark.</action>
     <action                   type="fix" dev="ggregory" due-to="Gary 
Gregory">Speedup CharSequenceUtils.toCharArray(CharSequence) for StringBuffer 
input: 300-4,250% improvement (4-44x faster), see 
CharSequenceUtilsBenchmark.</action>
     <action                   type="fix" dev="ggregory" due-to="Gary 
Gregory">Speedup CharSequenceUtils.toCharArray(CharSequence) for String input: 
~1-2% improvement (essentially identical).</action>
+    <action                   type="fix" dev="ggregory" due-to="Gary 
Gregory">Streamline StringUtils.truncate(String, int, int).</action>
     <!-- ADD -->
     <!-- UPDATE -->
     <action                   type="update" dev="ggregory" due-to="Gary 
Gregory, Dependabot">Bump org.apache.commons:commons-parent from 92 to 93 
#1498.</action>
diff --git a/src/main/java/org/apache/commons/lang3/StringUtils.java 
b/src/main/java/org/apache/commons/lang3/StringUtils.java
index e7fd432cd..185675324 100644
--- a/src/main/java/org/apache/commons/lang3/StringUtils.java
+++ b/src/main/java/org/apache/commons/lang3/StringUtils.java
@@ -8876,14 +8876,10 @@ public static String truncate(final String str, final 
int offset, final int maxW
         if (str == null) {
             return null;
         }
-        if (offset > str.length()) {
-            return EMPTY;
-        }
-        if (str.length() > maxWidth) {
-            final int ix = Math.min(offset + maxWidth, str.length());
-            return str.substring(offset, ix);
-        }
-        return str.substring(offset);
+        final int len = str.length();
+        final int start = Math.min(offset, len);
+        final int end = offset > len - maxWidth ? len : offset + maxWidth;
+        return str.substring(start, Math.min(end, len));
     }
 
     /**

Reply via email to