Essentials/Essentials/src/main/java/com/earth2me/essentials/utils/StringUtil.java

89 lines
2.9 KiB
Java
Raw Normal View History

2013-06-08 23:31:19 +02:00
package com.earth2me.essentials.utils;
2015-04-15 06:06:16 +02:00
import java.util.Collection;
import java.util.Locale;
import java.util.UUID;
2013-06-08 23:31:19 +02:00
import java.util.regex.Pattern;
2020-10-03 19:46:05 +02:00
public final class StringUtil {
2015-04-15 06:06:16 +02:00
private static final Pattern INVALIDFILECHARS = Pattern.compile("[^a-z0-9-]");
private static final Pattern STRICTINVALIDCHARS = Pattern.compile("[^a-z0-9]");
@SuppressWarnings("CheckStyle")
2015-04-15 06:06:16 +02:00
private static final Pattern INVALIDCHARS = Pattern.compile("[^\t\n\r\u0020-\u007E\u0085\u00A0-\uD7FF\uE000-\uFFFC]");
2013-06-08 23:31:19 +02:00
2020-10-03 19:46:05 +02:00
private StringUtil() {
}
2015-04-15 06:06:16 +02:00
//Used to clean file names before saving to disk
public static String sanitizeFileName(final String name) {
return INVALIDFILECHARS.matcher(name.toLowerCase(Locale.ENGLISH)).replaceAll("_");
}
2013-06-08 23:31:19 +02:00
2015-04-15 06:06:16 +02:00
//Used to clean strings/names before saving as filenames/permissions
public static String safeString(final String string) {
return STRICTINVALIDCHARS.matcher(string.toLowerCase(Locale.ENGLISH)).replaceAll("_");
}
2013-06-08 23:31:19 +02:00
2015-04-15 06:06:16 +02:00
//Less restrictive string sanitizing, when not used as perm or filename
public static String sanitizeString(final String string) {
return INVALIDCHARS.matcher(string).replaceAll("");
}
2013-06-08 23:31:19 +02:00
2020-10-03 19:46:05 +02:00
public static String joinList(final Object... list) {
2015-04-15 06:06:16 +02:00
return joinList(", ", list);
}
2013-06-08 23:31:19 +02:00
2020-10-03 19:46:05 +02:00
public static String joinList(final String seperator, final Object... list) {
final StringBuilder buf = new StringBuilder();
for (final Object each : list) {
2015-04-15 06:06:16 +02:00
if (buf.length() > 0) {
buf.append(seperator);
}
2013-06-08 23:31:19 +02:00
2015-04-15 06:06:16 +02:00
if (each instanceof Collection) {
buf.append(joinList(seperator, ((Collection) each).toArray()));
} else {
try {
buf.append(each.toString());
2020-10-03 19:46:05 +02:00
} catch (final Exception e) {
2015-04-15 06:06:16 +02:00
buf.append(each.toString());
}
}
}
return buf.toString();
}
2020-10-03 19:46:05 +02:00
public static String joinListSkip(final String seperator, final String skip, final Object... list) {
final StringBuilder buf = new StringBuilder();
for (final Object each : list) {
2015-04-15 06:06:16 +02:00
if (each.toString().equalsIgnoreCase(skip)) {
continue;
}
if (buf.length() > 0) {
buf.append(seperator);
}
if (each instanceof Collection) {
buf.append(joinListSkip(seperator, skip, ((Collection) each).toArray()));
} else {
try {
buf.append(each.toString());
2020-10-03 19:46:05 +02:00
} catch (final Exception e) {
2015-04-15 06:06:16 +02:00
buf.append(each.toString());
}
}
}
return buf.toString();
}
2020-10-03 19:46:05 +02:00
public static UUID toUUID(final String input) {
try {
return UUID.fromString(input);
2020-10-03 19:46:05 +02:00
} catch (final IllegalArgumentException ignored) {
}
return null;
}
2013-06-08 23:31:19 +02:00
}