From b06684a9c564d3ddd32c24ba862ee438d45cd852 Mon Sep 17 00:00:00 2001 From: Christophe Beyls Date: Sun, 29 Jan 2017 21:25:58 +0100 Subject: [PATCH] =?UTF-8?q?Improved=20StringUtils.toSlug()=20-=20remove=20?= =?UTF-8?q?dots=20-=20replace=20=C3=9F=20with=20ss?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../digitalia/fosdem/utils/StringUtils.java | 22 ++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/be/digitalia/fosdem/utils/StringUtils.java b/app/src/main/java/be/digitalia/fosdem/utils/StringUtils.java index 967663f..0a915a8 100644 --- a/app/src/main/java/be/digitalia/fosdem/utils/StringUtils.java +++ b/app/src/main/java/be/digitalia/fosdem/utils/StringUtils.java @@ -50,6 +50,20 @@ public class StringUtils { return new String(result); } + public static String remove(String str, final char remove) { + if (TextUtils.isEmpty(str) || str.indexOf(remove) == -1) { + return str; + } + final char[] chars = str.toCharArray(); + int pos = 0; + for (int i = 0; i < chars.length; i++) { + if (chars[i] != remove) { + chars[pos++] = chars[i]; + } + } + return new String(chars, 0, pos); + } + /** * Replaces all groups of non-alphanumeric chars in source with a single replacement char. */ @@ -99,7 +113,13 @@ public class StringUtils { * Transforms a name to a slug identifier to be used in a FOSDEM URL. */ public static String toSlug(@NonNull String source) { - return replaceNonAlphaGroups(trimNonAlpha(removeDiacritics(source)), '_').toLowerCase(Locale.US); + source = remove(source, '.'); + source = removeDiacritics(source); + source = source.replace("ß", "ss"); + source = trimNonAlpha(source); + source = replaceNonAlphaGroups(source, '_'); + source = source.toLowerCase(Locale.US); + return source; } @SuppressWarnings("deprecation")