Util: New util to truncate a string that won't split across a surrogate pair

This commit is contained in:
zzz
2018-01-10 17:39:58 +00:00
parent 50eb93deec
commit 541dae36d4
4 changed files with 25 additions and 4 deletions

View File

@@ -61,4 +61,23 @@ public class ServletUtil {
ua.startsWith("SEC-") || ua.startsWith("SonyEricsson") ||
ua.startsWith("Vodafone");
}
/**
* Truncate a String.
* Same as s.substring(0, len) except that
* it won't split a surrogate pair.
*
* @param s non-null
* @return s if shorter; s.substring(0, len) if
* the char at len-1 is not a high surrogate;
* s.substring(0, len+1) if it is
* @since 0.9.33
*/
public static String truncate(String s, int len) {
if (s.length() <= len)
return s;
if (Character.isHighSurrogate(s.charAt(len - 1)))
return s.substring(0, len + 1);
return s.substring(0, len);
}
}