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));
}
/**