StringUtil class

Пакет: com.hypixel.hytale.common.util

Файл: com/hypixel/hytale/common/util/StringUtil.java

Поля (72)

МодификаторыТипИмя
INDEX_DIFFERENCE, EQUALS, CASE_INSENSITIVE
final char[] HEX_CHARS
break
var1
char var1
StringBuilder var1
var1
byte[] var1
String var10
var10
String var10
long var11
int var11
Enum var12
var12
int var13
int var14
var14
int var14
double var15
long var17
double var19
char var2
char var2
char var2
boolean var2
var2
boolean var2
var2
char var2
char var2
long var2
Object2IntMap var2
int var2
int var2
var2
double var21
double[] var23
int var24
double var26
int var28
StringBuilder var3
char var3
List var3
Object2IntMap var3
int var3
double var30
double var31
String var32
int var33
double var34
double var36
int var38
double var39
var39
char var4
char var4
long var4
int var4
int var40
var40
String[] var41
String var43
char var5
char var5
List var5
int var5
long var6
StringBuilder var6
long var8
int var9
int var9

Методы (46)

МодификаторыВозвратСигнатура
MatchType MatchType()
abstract return new Stringreturn new String(var1, 0)
for for(Enum var6 : var0)
for for(Enum var17 : var0)
for for(Enum var8 : var0)
for for(Object var4 : var1)
for for(Object var5 : var1)
for for(String var4 : var0)
for for(int var7 = 0; var7 < var5; var7++)
for for(int var8 = 0; var8 < var14; var8++)
for for(int var25 = 0; var25 < var1; var25++)
for for(int var27 = var23.length - 1; var27 >= 0; var27--)
for for(int var42 = 0; var42 < var2; var42++)
for for(int var44 = 0; var44 < var2; var44++)
for for(int var45 = 0; var45 < var1; var45++)
abstract for for(int var1 = 0; var1 < var0.length()
abstract for for(int var3 = 0; var3 < var0.length()
abstract for for(int var4 = 0; var4 < var0.length()
abstract for for(int var2 = 0; var2 < var0.length()
abstract for for(int var12 = var10.length()
static void generateGraphvoid generateGraph(@Nonnull StringBuilder var0, int var1, int var2, long var3, long var5, double var7, double var9, @Nonnull DoubleFunction<String> var11, int var12, @Nonnull IntToLongFunction var13, @Nonnull IntToDoubleFunction var14)
abstract return humanizeTimereturn humanizeTime(var0, false)
if if(var2 < '0' || var2 > '9')
if if(var2 == StringUtil.MatchType.EQUALS)
if if(var9 > var14 && var14 != -1 || var9 == -1 || var14 == -2)
if if(var14 > -2)
if if(var1 == '"' && var2 == '"' || var1 == '\'' && var2 == '\'')
if if(var3 >= ' ' && var3 <= '~')
if if(var1 != null)
if if(var1 == null)
if if(var4 == '*')
if if(var2 == '?' || var2 == '*')
if if(var1)
if if(var2 == 32)
if if(var28 != 0)
if if(var23[var27] != -1.0)
if if(var33 > var40)
static boolean isAlphaNumericHyphenStringboolean isAlphaNumericHyphenString(@Nonnull String var0)
static boolean isAlphaNumericHyphenUnderscoreStringboolean isAlphaNumericHyphenUnderscoreString(@Nonnull String var0)
static boolean isCapitalizedboolean isCapitalized(@Nonnull String var0, char var1)
static boolean isGlobMatchingboolean isGlobMatching(@Nonnull String var0, @Nonnull String var1)
static boolean isGlobMatchingboolean isGlobMatching(@Nonnull String var0, int var1, @Nonnull String var2, int var3)
static boolean isGlobPatternboolean isGlobPattern(@Nonnull String var0)
static boolean isNumericStringboolean isNumericString(@Nonnull String var0)
abstract return parseEnumreturn parseEnum(var0, var1, StringUtil.MatchType.EQUALS)
static <T> void sortByFuzzyDistance<T> void sortByFuzzyDistance(@Nonnull String var0, @Nonnull List<T> var1, @Nonnull Function<T, String> var2)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.common.util;

class="kw">import it.unimi.dsi.fastutil.objects.Object2IntMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.time.Duration;
class="kw">import java.util.Arrays;
class="kw">import java.util.Collection;
class="kw">import java.util.Comparator;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.function.DoubleFunction;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.IntToDoubleFunction;
class="kw">import java.util.function.IntToLongFunction;
class="kw">import java.util.regex.Pattern;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class StringUtil {
   class="kw">private class="kw">static class="kw">final char[] HEX_CHARS = "0123456789ABCDEF".toCharArray();
   class="kw">public class="kw">static class="kw">final Pattern RAW_ARGS_PATTERN = Pattern.compile(" -- ");
   @Nonnull
   class="kw">private class="kw">static class="kw">final char[] GRAPH_CHARS = new char[]{'_', '\u2584', '\u2500', '\u2580', '\u00af'};

   class="kw">public StringUtil() {
   }

   class="kw">public class="kw">static boolean isNumericString(@Nonnull String var0) {
      for (int var1 = 0; var1 < var0.length(); var1++) {
         char var2 = var0.charAt(var1);
         if (var2 < '0' || var2 > '9') {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   class="kw">public class="kw">static boolean isAlphaNumericHyphenString(@Nonnull String var0) {
      for (int var1 = 0; var1 < var0.length(); var1++) {
         char var2 = var0.charAt(var1);
         if ((var2 < '0' || var2 > 'z' || var2 > '9' && var2 < 'A' || var2 > 'Z' && var2 < 'a') && var2 != '-') {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   class="kw">public class="kw">static boolean isAlphaNumericHyphenUnderscoreString(@Nonnull String var0) {
      for (int var1 = 0; var1 < var0.length(); var1++) {
         char var2 = var0.charAt(var1);
         if ((var2 < '0' || var2 > 'z' || var2 > '9' && var2 < 'A' || var2 > 'Z' && var2 < 'a') && var2 != '-' && var2 != '_') {
            class="kw">return false;
         }
      }

      class="kw">return true;
   }

   class="kw">public class="kw">static boolean isCapitalized(@Nonnull String var0, char var1) {
      boolean var2 = true;

      for (int var3 = 0; var3 < var0.length(); var3++) {
         char var4 = var0.charAt(var3);
         if (var2 && var4 != Character.toUpperCase(var4)) {
            class="kw">return false;
         }

         var2 = var4 == var1;
      }

      class="kw">return true;
   }

   @Nonnull
   class="kw">public class="kw">static String capitalize(@Nonnull String var0, char var1) {
      boolean var2 = true;
      StringBuilder var3 = new StringBuilder();

      for (int var4 = 0; var4 < var0.length(); var4++) {
         char var5 = var0.charAt(var4);
         var3.append(var2 ? Character.toUpperCase(var5) : var5);
         var2 = var5 == var1;
      }

      class="kw">return var3.toString();
   }

   @Nullable
   class="kw">public class="kw">static <V class="kw">extends Enum<V>> V parseEnum(@Nonnull V[] var0, String var1) {
      class="kw">return parseEnum(var0, var1, StringUtil.MatchType.EQUALS);
   }

   @Nullable
   class="kw">public class="kw">static <V class="kw">extends Enum<V>> V parseEnum(@Nonnull V[] var0, String var1, StringUtil.MatchType var2) {
      if (var2 == StringUtil.MatchType.EQUALS) {
         for (Enum var6 : var0) {
            if (var6.name().equals(var1)) {
               class="kw">return var6;
            }
         }
      } else if (var2 == StringUtil.MatchType.CASE_INSENSITIVE) {
         for (Enum var17 : var0) {
            if (var17.name().equalsIgnoreCase(var1)) {
               class="kw">return var17;
            }
         }
      } else {
         var1 = var1.toLowerCase(Locale.ROOT);
         Enum var12 = null;
         int var14 = -2;

         for (Enum var8 : var0) {
            int var9 = StringCompareUtil.indexOfDifference(var1, var8.name().toLowerCase(Locale.ROOT));
            if (var9 > var14 && var14 != -1 || var9 == -1 || var14 == -2) {
               var12 = var8;
               var14 = var9;
            }
         }

         if (var14 > -2) {
            class="kw">return var12;
         }
      }

      class="kw">return null;
   }

   @Nonnull
   class="kw">public class="kw">static String stripQuotes(@Nonnull String var0) {
      if (var0.length() >= 2) {
         char var1 = var0.charAt(0);
         char var2 = var0.charAt(var0.length() - 1);
         if (var1 == '"' && var2 == '"' || var1 == '\'' && var2 == '\'') {
            class="kw">return var0.substring(1, var0.length() - 1);
         }
      }

      class="kw">return var0;
   }

   @Nullable
   class="kw">public class="kw">static String sanitizeAsciiString(@Nullable String var0) {
      if (var0 != null && !var0.isEmpty()) {
         StringBuilder var1 = null;

         for (int var2 = 0; var2 < var0.length(); var2++) {
            char var3 = var0.charAt(var2);
            if (var3 >= ' ' && var3 <= '~') {
               if (var1 != null) {
                  var1.append(var3);
               }
            } else {
               if (var1 == null) {
                  var1 = new StringBuilder(var0.length() + 16);
                  var1.append(var0, 0, var2);
               }

               var1.append("\\x");
               var1.append(HEX_CHARS[var3 >> 4 & 15]);
               var1.append(HEX_CHARS[var3 & 15]);
            }
         }

         class="kw">return var1 != null ? var1.toString() : var0;
      } else {
         class="kw">return var0;
      }
   }

   class="kw">public class="kw">static boolean isGlobMatching(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return var0.equals(var1) || isGlobMatching(var0, 0, var1, 0);
   }

   class="kw">public class="kw">static boolean isGlobMatching(@Nonnull String var0, int var1, @Nonnull String var2, int var3) {
      while (var1 < var0.length()) {
         char var4 = var0.charAt(var1);
         if (var4 == '*') {
            var1++;

            while (var1 < var0.length() && var0.charAt(var1) == '*') {
               var1++;
            }

            if (var1 == var0.length()) {
               class="kw">return true;
            }

            char var5 = var0.charAt(var1);

            while (var3 < var2.length()) {
               if (var5 == var2.charAt(var3) && isGlobMatching(var0, var1 + 1, var2, var3 + 1)) {
                  class="kw">return true;
               }

               var3++;
            }

            class="kw">return false;
         }

         if (var3 == var2.length()) {
            class="kw">return false;
         }

         if (var4 != '?' && var4 != var2.charAt(var3)) {
            class="kw">return false;
         }

         var1++;
         var3++;
      }

      class="kw">return var3 == var2.length();
   }

   class="kw">public class="kw">static boolean isGlobPattern(@Nonnull String var0) {
      for (int var1 = 0; var1 < var0.length(); var1++) {
         char var2 = var0.charAt(var1);
         if (var2 == '?' || var2 == '*') {
            class="kw">return true;
         }
      }

      class="kw">return false;
   }

   @Nonnull
   class="kw">public class="kw">static String humanizeTime(@Nonnull Duration var0, boolean var1) {
      long var2 = var0.toMillis();
      long var4 = var2 / 86400000L;
      long var6 = (var2 - var4 * 86400000L) / 3600000L;
      long var8 = (var2 - (var4 * 86400000L + var6 * 3600000L)) / 60000L;
      String var10 = var4 + "d " + var6 + "h " + var8 + "m";
      if (var1) {
         long var11 = (var2 - (var4 * 86400000L + var6 * 3600000L + var8 * 60000L)) / 1000L;
         var10 = var10 + " " + var11 + "s";
      }

      class="kw">return var10;
   }

   @Nonnull
   class="kw">public class="kw">static String humanizeTime(@Nonnull Duration var0) {
      class="kw">return humanizeTime(var0, false);
   }

   @Nonnull
   class="kw">public class="kw">static <T> List<T> sortByFuzzyDistance(@Nonnull String var0, @Nonnull Collection<T> var1, int var2) {
      List var3 = sortByFuzzyDistance(var0, var1);
      class="kw">return var3.size() > var2 ? var3.subList(0, var2) : var3;
   }

   @Nonnull
   class="kw">public class="kw">static <T> List<T> sortByFuzzyDistance(@Nonnull String var0, @Nonnull Collection<T> var1) {
      Object2IntMap var2 = new Object2IntOpenHashMap(var1.size());

      for (Object var4 : var1) {
         var2.put(var4, StringCompareUtil.getFuzzyDistance(var4.toString(), var0, Locale.ENGLISH));
      }

      List var5 = new ObjectArrayList(var1);
      var5.sort(Comparator.comparingInt(var2::getInt).reversed());
      class="kw">return var5;
   }

   class="kw">public class="kw">static <T> void sortByFuzzyDistance(@Nonnull String var0, @Nonnull List<T> var1, @Nonnull Function<T, String> var2) {
      Object2IntMap var3 = new Object2IntOpenHashMap(var1.size());

      for (Object var5 : var1) {
         var3.put(var5, StringCompareUtil.getFuzzyDistance(var2.apply(var5), var0, Locale.ENGLISH));
      }

      var1.sort(Comparator.comparingInt(var3::getInt).reversed());
   }

   @Nonnull
   class="kw">public class="kw">static String toPaddedBinaryString(int var0) {
      byte[] var1 = new byte[]{48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48};
      int var2 = Integer.numberOfLeadingZeros(var0);
      if (var2 == 32) {
         class="kw">return new String(var1, 0);
      }

      int var3 = 32 - var2;
      int var4 = Math.max(var3, 1);

      do {
         var1[var2 + --var4] = (byte)(48 + (var0 & 1));
         var0 >>>= 1;
      } while (var4 > 0);

      class="kw">return new String(var1, 0);
   }

   @Nonnull
   class="kw">public class="kw">static String trimEnd(@Nonnull String var0, @Nonnull String var1) {
      class="kw">return !var0.endsWith(var1) ? var0 : var0.substring(0, var0.length() - var1.length());
   }

   @Nonnull
   class="kw">public class="kw">static String formatColumns(@Nonnull List<String> var0, int var1) {
      if (var0.isEmpty()) {
         class="kw">return "";
      }

      int var2 = 0;

      for (String var4 : var0) {
         if (var4.length() > var2) {
            var2 = var4.length();
         }
      }

      int var13 = var2 + 2;
      int var14 = Math.max(1, var1 / var13);
      int var5 = (var0.size() + var14 - 1) / var14;
      StringBuilder var6 = new StringBuilder();

      for (int var7 = 0; var7 < var5; var7++) {
         var6.append("\n  ");

         for (int var8 = 0; var8 < var14; var8++) {
            int var9 = var8 * var5 + var7;
            if (var9 >= var0.size()) {
               break;
            }

            String var10 = var0.get(var9);
            var6.append(var10);
            int var11 = (var8 + 1) * var5 + var7;
            if (var8 < var14 - 1 && var11 < var0.size()) {
               for (int var12 = var10.length(); var12 < var13; var12++) {
                  var6.append(' ');
               }
            }
         }
      }

      class="kw">return var6.toString();
   }

   class="kw">public class="kw">static void generateGraph(
      @Nonnull StringBuilder var0,
      int var1,
      int var2,
      long var3,
      long var5,
      double var7,
      double var9,
      @Nonnull DoubleFunction<String> var11,
      int var12,
      @Nonnull IntToLongFunction var13,
      @Nonnull IntToDoubleFunction var14
   ) {
      double var15 = var9 - var7;
      long var17 = var5 - var3;
      double var19 = var15 / var2;
      double var21 = (double)var17 / var1;
      double[] var23 = new double[var1];
      Arrays.fill(var23, -1.0);
      int var24 = 0;

      for (int var25 = 0; var25 < var1; var25++) {
         double var26 = 0.0;
         int var28 = 0;

         for (long var29 = var5 - (var17 - (long)(var21 * var25)); var24 < var12 && var13.applyAsLong(var24) < var29; var24++) {
            var26 += var14.applyAsDouble(var24);
            var28++;
         }

         if (var28 != 0) {
            var23[var25] = var26 / var28;
         } else if (var25 > 0) {
            var23[var25] = var23[var25 - 1];
         }
      }

      double var39 = -1.0;

      for (int var27 = var23.length - 1; var27 >= 0; var27--) {
         if (var23[var27] != -1.0) {
            var39 = var23[var27];
         } else if (var39 != -1.0) {
            var23[var27] = var39;
         }
      }

      int var40 = 0;
      String[] var41 = new String[var2];

      for (int var42 = 0; var42 < var2; var42++) {
         double var30 = var7 + var15 - var19 * var42;
         String var32 = var11.apply(var30);
         var41[var42] = var32;
         int var33 = var32.length();
         if (var33 > var40) {
            var40 = var33;
         }
      }

      String var43 = " ".repeat(var40) + " " + "#".repeat(var1 + 2);
      var0.append(var43).append('\n');

      for (int var44 = 0; var44 < var2; var44++) {
         var0.append(" ".repeat(Math.max(0, var40 - var41[var44].length()))).append(var41[var44]).append(" #");
         double var31 = var7 + var15 - var19 * (var44 + 1);

         for (int var45 = 0; var45 < var1; var45++) {
            double var34 = var23[var45] - var31;
            if (!(var34 <= 0.0) && !(var34 > var19)) {
               double var36 = var34 / var19;
               int var38 = (int)Math.round(var36 * (GRAPH_CHARS.length - 1));
               var0.append(GRAPH_CHARS[Math.max(0, var38)]);
            } else {
               var0.append(' ');
            }
         }

         var0.append("#\n");
      }

      var0.append(var43).append('\n');
      var0.append('\n');
   }

   class="kw">public enum MatchType {
      INDEX_DIFFERENCE,
      EQUALS,
      CASE_INSENSITIVE;

      MatchType() {
      }
   }
}