aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/apache/commons/lang3/CharUtils.java
diff options
context:
space:
mode:
authorBenedikt Ritter <britter@apache.org>2015-03-13 18:18:59 +0000
committerBenedikt Ritter <britter@apache.org>2015-03-13 18:18:59 +0000
commit1f75a8f7cc28fef663eaca75e831c9da11ea2b0e (patch)
tree4982498dd2162e3f9d7088d5266fed9d79f41f59 /src/main/java/org/apache/commons/lang3/CharUtils.java
parenta234f033b67a9068702ea2aa5c87e18dbc4f854b (diff)
downloadapache-commons-lang-1f75a8f7cc28fef663eaca75e831c9da11ea2b0e.tar.gz
LANG-877: Performance improvements for StringEscapeUtils. This fixes #49 from github. Thanks to Fabian Lange.
git-svn-id: https://svn.apache.org/repos/asf/commons/proper/lang/trunk@1666535 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'src/main/java/org/apache/commons/lang3/CharUtils.java')
-rw-r--r--src/main/java/org/apache/commons/lang3/CharUtils.java17
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/java/org/apache/commons/lang3/CharUtils.java b/src/main/java/org/apache/commons/lang3/CharUtils.java
index 3f19a214e..eb0c2c684 100644
--- a/src/main/java/org/apache/commons/lang3/CharUtils.java
+++ b/src/main/java/org/apache/commons/lang3/CharUtils.java
@@ -31,6 +31,8 @@ public class CharUtils {
private static final String[] CHAR_STRING_ARRAY = new String[128];
+ private static final char[] HEX_DIGITS = new char[] {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'};
+
/**
* {@code \u000a} linefeed LF ('\n').
*
@@ -350,14 +352,13 @@ public class CharUtils {
* @return the escaped Unicode string
*/
public static String unicodeEscaped(final char ch) {
- if (ch < 0x10) {
- return "\\u000" + Integer.toHexString(ch);
- } else if (ch < 0x100) {
- return "\\u00" + Integer.toHexString(ch);
- } else if (ch < 0x1000) {
- return "\\u0" + Integer.toHexString(ch);
- }
- return "\\u" + Integer.toHexString(ch);
+ StringBuilder sb = new StringBuilder(6);
+ sb.append("\\u");
+ sb.append(HEX_DIGITS[(ch >> 12) & 15]);
+ sb.append(HEX_DIGITS[(ch >> 8) & 15]);
+ sb.append(HEX_DIGITS[(ch >> 4) & 15]);
+ sb.append(HEX_DIGITS[(ch) & 15]);
+ return sb.toString();
}
/**